[Linux] Vim Editor

zzwon1212·2023년 9월 22일
0

Linux

목록 보기
5/11

Linux를 다른 운영체제에서 이용하는 방법에는 가상 머신(VMware, VirtualBox), 멀티 부팅, WSL 등이 있다. 나는 Windows 11 운영체제에서 WSL2(Windows Subsystem for Linux 2)를 활용하여 Ubuntu 18.04.6 LTS를 이용하고 있다.

1. Vim 기초

1.1. 설치

  • Windows에서 빨리 익히고 싶다면 메모장 대신 Windows gvim을 사용해보자.
  • Linux에 기본적으로 설치되어 있는 vim은 기능이 제한되어 있으므로 아래 코드를 실행하여 설치해주자.
    sudo apt -y install vim

1.2. 시작

vim tmp.txt

tmp.txt 파일을 연다.

find . -name '*.txt' | vim -

find의 결과값을 vim으로 연다. 파일명이 '-'일 경우에는 stdin을 의미한다.

1.3. 모드

  • Normal mode(일반모드)
  • Insert mode(입력모드)
  • Command line mode(명령행모드)
  • Visual mode(비주얼모드): 마우스를 대신하는 드래그 모드

2. Normal mode

2.1. 커서 이동

  • HJKL^ 맨 앞$ 맨 뒤
    [#][HJKL]: 키 입력 전에 숫자를 입력하면 그 수만큼 이동한다.

2.2. 특정 라인으로 이동

  • 명령어설명
    :##행으로 이동
    gg1행으로 이동
    G마지막행으로 이동
    <CTRL-G>현재 위치 정보를 표시

2.3. 스크롤

  • 명령어설명
    <CTRL-B>위로 한 화면 스크롤(backward) == <Page Up>
    <CTRL-F>아래로 한 화면 스크롤(backward) == <Page Down>
    <CTRL-U>위로 1/2 화면 스크롤(up)
    <CTRL-D>아래로 1/2 화면 스크롤(down)

2.4. 입력모드로 전환

  • 명령어설명
    a현재 커서 다음 위치
    A현재 행의 끝으로 이동
    i현재 커서 앞에 위치
    I현재 행의 맨 앞으로 이동
    o현재 행 아래에 빈 행 생성
    O현재 행 위에 빈 행 생성
    R수정(replace) 모드로써 모든 글자가 덧쓰여짐

2.5. cut

  • vi에서 삭제한 내용은 임시 버퍼(buffer)에 들어간다.

    명령어설명
    x커서에 위치한 문자 삭제 == <Delete>
    dd, :d현재 행을 삭제
    D현재 위치에서 행의 끝까지 삭제 == d$
    J아래 행을 현재 행의 끝에 붙임(아래 행의 앞부분 공백은 제거)

    3dd: 세 줄 삭제

2.6. copy

  • 명령어설명
    yy, :y, Y현재 행을 레지스터에 복사(yank)

2.7. put

  • 명령어설명
    p현재 행 아래쪽에 붙여넣기 /?현재 커서 뒤에 붙여넣기
    :pu개행 문자가 포함된 경우에 현재 행의 아래에 붙여넣기
    P(대문자)현재 행의 위쪽에 붙여넣기 /?현재 커서 앞에 붙여넣기
    5p: 다섯 번 붙여넣기

2.8. undo, redo, dot

  • 명령어설명
    uundo
    <CTRL-R>redo
    .이전 명령어 반복

3. Command line mode

3.1. 기호

  • 명령어설명
    wwrite
    qquit
    !force 명령
    .현재 행을 의미
    $마지막 행을 의미
    +#현재 행부터 아래로 #개 행을 의미
    -#현재 행부터 위로 #개 행을 의미
    %문서(파일) 전체를 의미

3.2. range

  • 범위를 지정하여 명령

    명령어설명
    :20d20행을 삭제
    10,25d10~25행을 삭제
    10,$d10~마지막행을 삭제
    :%y문서 전체를 복사. %==1,$
    :.,+20y현재 행부터 아래로 20개 행을 복사
    :-10,+5d현재 행부터 위로 10개 행, 아래로 5개 행, 총 열여섯행을 삭제
    :40pu40행에 레지스터의 내용을 붙여넣기

4. Visual mode

  • mouse의 drag 기능을 대신한다.

  • 명령어설명
    v일반 비주얼 모드로, 현재 커서 위치에서 블록을 지정한다.
    Vvisual line mode로, 현재 커서가 위치한 행에서 행 단위로 블록을 지정
    <CTRL-V>visual block mode로, 열 단위로 블록을 지정한다. (사용 불가 시 <CTRL-Q>로 대신)
    o블록의 시작, 끝 이동

  • 왼쪽 파일을 오른쪽 파일처럼 수정하기
    gg<CTRL-V>GI0000<ESC>

5. vimx

  • vim-gnome: 더 많은 기능을 가진 vimx(vim + clipboard, X window clipboard)을 사용해보자. gvim

    sudo apt install vim-gnome # vim-gnome 설치
    # sudo apt --auto-remove remove vim-gnome # 제거
  • X window 환경에서 vim과 클립보드를 공유하려면 clipboard, xterm_clipboard 기능이 포함(+)되어 있는지 확인해야 한다.

    vim --version | grep clipboard

  • ~/.vimrc 환경설정에 다음 clipboard 설정이 필요

    " clipboard settings : Copy/Paste/Cut
    if has('unnamedplus')
    		  set clipboard=unnamed,unnamedplus
    endif
  • gvim와 gedit(X 윈도우 에디터)을 오가며 복사와 붙여넣기를 시도해보자.

6. Vim의 옵션

  • 주요 명령어와 옵션

    명령어설명
    :set현재 옵션 설정 출력
    :set all모든 옵션 설정 출력(default 옵션까지)
    :set [no]namename에 해당하는 옵션을 on/off. no 입력 시 off
    :set name!name 옵션의 on/off toggle
    :set name=valuename 옵션에 value의 값을 할당
    nu(number) 행번호 표시
    rnu(relative num) 현재 행을 기준으로 상대적 행번호 표시
    ai(auto indent) 자동 들여쓰기
    cindentC언어 스타일의 들여쓰기
    ts=value(tab stop) 화면에 표시될 탭 크기를 value로 지정. (default=8)
    sw=value(shift width) 자동 블록 이동 시 열의 너비
    fencs=value(file encodings) 현재 파일 인코딩 방식을 지정
  • ~/.vimrc 파일에 설정을 저장할 수 있다. 개별 파일에서도 설정 가능하다.

    set nu
    set ts=4 sw=4
    set ai cindent
    " option to read files encoded by euc-kr
    set fencs=ucs-bom,utf-8,korea
    colorscheme jellybeans


    ~/.vimrc에 위 코드를 저장함으로써 set nu로 행번호를 표시하고 colorscheme jellybeans로 색 테마를 변경하였다. (jellybeans 테마 github repository)


📙강의 - 코인즈월렛 기술이사 김선영

profile
JUST DO IT.

0개의 댓글

관련 채용 정보