:set 으로 옵션 설정


앞서 포스팅한 옵션 개요에서 :set all 명령어로 살펴본 옵션은 너무 많았다

명령 라인에 :set all 명령이 아닌 :set 을 실행해보면 현재 설정된 주요 옵션들만 간략하게 볼 수 있다.


:set


:set 명령으로 나타난 옵션들은 다음 사진과 같이 한 화면 내에 간략하게 나타난다.


 


:set 명령으로 옵션을 조작할 수 있다.

 

우선 on/off만 있는 옵션의 경우 다음과 같이 조작한다.


:set 옵션이름 해당 옵션을 활성화(on)

:set no옵션이름 해당 옵션을 비활성화(off)

:set 옵션이름! 해당 옵션의 on, off 상태를 서로 전환(toggle)


특정 값을 갖는 옵션은 다음과 같이 :set을 사용하여 조작한다.

 

:set 옵션이름=특정값 해당 옵션에 특정 값을 할당

:set 옵션이름 당 옵션이 갖고 있는 값을 표시


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



전체 옵션 열어보기


모든 소프트웨어들처럼 vim도 사용자 입맛에 맞게 튜닝이 가능하도록 다양한 옵션을 갖고 있다. 당연한 이야기지만 이 모든 옵션들을 다 숙지할 필요는 없다. 필요한 옵션을 찾아서 그때그때 적용하는 것으로도 vim을 잘 쓰는데 충분하다.

 

그럼에도 vim 옵션에 대해서 언급하지 않으면 vim이 다른 에디터처럼 다양한 메뉴를 제공해주는 것도 아니어서 초심자들은 옵션이 있는지도 모르고 지나갈 수도 있다(실은 제가 그랬습니다). 그러니 몇 가지를 우선 짚어보자.

 

우선vim에서 옵션이란 것이 어떤 것이 있는지 확인하는 것이 먼저일 것이다.

 

vim의 모든 옵션을 보고 싶으면 명령 라인으로 들어가서 다음의 명령어를 입력하면 된다. 


:set all


명령어를 입력하면 다음의 사진과 같이 모든 옵션들이 표시된다. 



vim 옵션의 종류


위의 사진에서 정말 많은 옵션들을 확인할 수 있다. 옵션을 한 페이지에 모두 보여줄 수 없어 화면 하단에는 -- -- 라는 표시가 나타나 있다. 이 상태에서 [Enter] 를 치면 한 줄씩 화면이 내려가고, [Space] 를 누르면 한 화면씩 내려간다. 화살표의 , j, k 모두 한 줄씩 화면을 옮기면서 원하는 옵션을 찾을 수 있도록 되어 있다. q 키를 누르면 바로 원래 화면으로 돌아간다.

 

보이는 옵션들 중에서 몇 가지 특징이 보이는데, 우선 옵션들이 열을 지어 나열되어 있다. 이 중 글자가 열을 맞추지 않고 튀어나온 옵션들이 보이는데 이는 모두 'no'라는 글자가 앞에 붙은 경우임을 알 수 있다. no'라는 글자를 제외하고 보면 옵션들이 알파벳순으로 나열되어 있음을 확인할 수 있다. 등호(=)가 붙어있는 옵션이 있고, 등호(=)가 있는 옵션들 중에서 등호에 어떤 값이 연결되어 있는 경우와 그렇지 않은 경우로 나누어진다.

 

이는 다음과 같은 것이다.


vim에서 옵션은 그저 키고 끄는 것만 있는 즉, on/off만 있는 옵션특정 값을 갖는 옵션두 종류로 크게 나눠볼 수 있다.

 

on/off만 가능한 옵션들은 off가 되었을 경우에는 앞에 'no'를 붙인다. 

 

, 등호(=)가 붙어 있는 옵션들은 어떤 값을 갖는 옵션들이다. 물론, 이 등호(=) 뒤에 값이 설정되어 있지 않은 옵션들은 활성화되지 않은 옵션이다.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


020 vim의 옵션 개요.apkg


블록 지정 후 커서 이동


앞서 포스팅에서는 블록 지정이 가능한 모드로 진입하면서 화살표 키h, j, k, l 키를 사용하는 것만 이야기했지만 vim명령 모드에서 사용하는 이동 관련 키들이 대부분 먹는다. 그래서 명령 모드에서 이동하듯이 단어 단위 행단위 또는 문장 단위 등으로 그냥 이동하면 된다.


, :[n] 명령을 쓰게 되면 원하는 행으로 바로 이동하지만 블록 지정이 풀리게 되므로 쓰지 않는 것이 좋다. 


블록 지정 후 사용 명령어


작업하고자 하는 부분을 블록으로 지정한 후 다음과 같은 작업을 수행한다. 


y → 블록 지정된 영역 복사

d → 블록 지정된 영역 삭제

> 라인() 앞에 탭 삽입

< 라인() 앞에 탭 삭제


~ 대소문자 상호 전환(대문자는 소문자로, 소문자는 대문자로 전환)

대문자 U 모두 대문자로 만듦

소문자 u 모두 소문자로 만듦(블록으로 지정되어 있는 영역에서 명령 취소가 아님)


콜론(:) 블록으로 지정된 영역에 한해 명령 라인 명령 (블록 지정된 상태에서 콜론(:)키를 누르면 명령 라인에 :'<,'>와 같은 형태가 자동으로 나타난다. '<,'> 표시는 블록으로 지정된 범위를 의미한다. 따라서 이 상태에서 명령 라인의 명령어를 다음처럼 작성하면 블록으로 지정된 범위에만 명령 라인 명령을 실행할 수 있다.

:'<,'>w test.txt 블록으로 지정된 부분만 test.txt 파일로 저장


 

Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



블록 지정


한글이나 워드 등을 써본 사람이라면 [Shift]를 누른 채 화살표 키를 눌러서 원하는 영역을 지정해서 복사, 삭제, 잘라내기 등을 해본 경험이 있을 것이다. 이때 우리가 지정한 영역이 반전되어 아래와 같이 나타나는데 이를 블록이라고 한다.


블록으로 지정된 부분  ← 블록으로 지정된 모습


이렇게 블록으로 지정하는 것이 얼마나 편한지는 이야기하지 않아도 잘 알 것이다.

 

vim은 다양한 상황에서 쉽게 블록 지정이 가능하도록 3가지 모드를 제공하고 있어서 이 사용법에 익숙해지면 마우스를 쓰지 않고도 편하게 다양한 상황에서 블록을 지정하여 편집할 수 있게 된다. 

 

vim에서 블록을 지정할 수 있게 해주는 3가지 모드는 비주얼 모드, 비주얼 라인 모드, 비주얼 블록 모드라고 부른다.



비주얼 모드(VISUAL MODE)


우리가 흔히 아는 블록 지정 방식이다. 원래 커서 위치에서 옮겨진 커서 위치까지 순차적으로 글자 단위로 블록이 지정된다


비주얼 모드로 진입하려면 명령 모드에서 소문자 v 키를 누르면 된다


명령 모드에서 소문자 v 키 → 비주얼 모드로 진입


이 때편집창 하단에 비주얼(또는 VISUAL) 이라는 표시가 뜨고 이 상태에서 화살표 키나 h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 글자 단위로 아래의 그림처럼 블록이 지정된다



비주얼 라인 모드(VISUAL LINE MODE)


비주얼 라인 모드는 그야말로 라인(행) 단위로 지정되는 모드다. , 블록은 무조건 하나의 라인(행) 단위로 생기는 것이다


비주얼 라인 모드로 진입하려면 명령 모드에서 대문자 V 키를 누르면 된다


명령 모드에서 대문자 V 키 → 비주얼 라인 모드로 진입


이 때, 편집창 하단에 비주얼 라인(또는 VISUAL LINE)이라고 표시가 뜨고 이 상태에서 화살표 키h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 라인() 단위로 아래의 그림처럼 블록이 지정된다



비주얼 블록 모드(VISUAL BLOCK MODE)


비주얼 블록 모드는 현재 커서 위치에서 옮겨진 커서 위치까지 사각형의 블록을 지정할 수 있게 해준다. 그래서 열 모드(column mode)라고도 불리우는데 이는 일반적인 에디터와 다르게 열단위로도 블록 지정이 가능하기 때문이다. 이를 이용하면 엑셀에서 스프레드 시트를 셀 단위로 지정하여 조작하는 것과 비슷한 효과를 얻을 수 있다. 


비주얼 블록 모드로 진입하려면 명령 모드에서 대문자 <Ctrl+v> 키를 누르면 된다.


명령 모드에서 <Ctrl+v> 키 → 비주얼 블록 모드로 진입


이 때, 편집창 하단에 비주얼 블록(또는 VISUAL BLOCK)이라고 표시가 뜨고 이 상태에서 화살표 키h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 사각형의 박스를 그리며 아래의 그림처럼 블록이 지정된다.

 

Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


018 블록 지정의 비주얼 모드.apkg


잘라내기(cut)


앞서 포스팅한 레지스터에 대한 내용을 이해했으면 vim에서는 잘라내기(cut)라는 것이 별도로 없다는 것을 눈치챌 수 있을 것이다. 이는 삭제한 데이터가 없어지지 않고 레지스터에 바로 들어가기 때문이다. 따라서 그냥 삭제하고 필요한 곳에서 pP키로 붙여넣으면 된다


, vim에서는 삭제가 곧 잘라내기(cut)이므로 별도의 잘라내기(cut) 키가 필요없다.



명령취소(Undo) 및 재실행(Redo)


문서를 편집할 때 실행을 취소하는 undo(보통 Ctrl+z)와 실행 취소한 것을 다시 재실행하는 redo 기능을 잘 쓰면 실수한 것을 되돌릴 수 있어 정말 편하다vim에도 동일한 기능이 있다. 바로 명령 모드에서 u<Ctrl+r> 이다


u 명령 취소(Undo)로 바로 이전에 행한 명령 취소

<Ctrl+r> 재실행(Redo)으로 이전에 명령 취소(u)한 것취소

※ vim에서 명령취소(u키)의 파워는 매우 강력해서 거의 대부분의 작업을 역순으로 감아올릴 수 있다



이전 작업 반복하기


마침표(.)를 쓰면 이전에 한 작업을 그대로 반복할 수 있다.


즉, 바로 앞에 명령 모드에서 명령어로 작업을 했다면 해당 명령어를 통한 작업을 반복하고,


바로 앞에 편집 모드에서 들어가서 문서를 작성한 후 [Esc] 키를 눌러 명령 모드로 돌아왔다면 마침표(.)를 누르면 편집 모드에서 [Esc] 키를 눌러 명령 모드로 돌아오기 전까지 입력한 내용들p와 동일한 방식으로 붙여넣기 된다. 이는 ". 레지스터에 있는 내용들을 p로 붙여넣기 하는 ".p 와 동일한 결과를 보여준다

 

명령 모드에서 dd.  → 커서가 위치한 행을 지우고 밑에 있는 행을 끌어올린 후 다시 동일한 작업 반복

명령 모드에서 x.   → 커서가 위치한 한글자를 지우고 다시 동일한 작업 반복

명령 모드에서 iloveu[Esc]jj. → 편집 모드로 들어가(i키) "loveu"라는 문자열을 타이핑한 후 다시 명령 모드로 돌아와([Esc]키) 현재 위치에서 2행 아래로 내려가서(jj키) "loveu" 라는 문자열을 p로 붙여넣기(.키)


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


017 잘라내기, 명령취소(undo), 재실행(redo), 이전 작업 반복하기.apkg

명령 모드에서 레지스터의 데이터 붙여넣기


명령 모드에서 레지스터의 데이터를 붙여넣는 방법은 간단하다다음과 같은 형식으로 명령하면 된다


큰따옴표(")+레지스터명+붙여넣기 명령어


큰따옴표(")레지스터 이름 앞에 항상 붙이고 그 다음에 p나 P 같은 붙여넣기 명령어를 입력하면 된다.

 

붙여넣기 명령어에서 p P의 차이는 아래와 같다. 


소문자 p → 현재 행에서 커서 다음 칸부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 아래 행에 붙여넣는다.


대문자 P → 현재 행에서 커서 위치부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 위쪽 행에 붙여넣는다.


, 예외적인 경우가 있다. 그것은 무명("") 레지스터의 데이터를 붙여넣기 하는 경우다. 이 경우에는 큰따옴표(")+레지스터명 없이 p나 P키로 바로 붙여넣기를 할 수 있다. 즉, 앞서 배운  p나 P키는 무명(""레지스터의 데이터를 붙여넣기 하는 키였던 것이다.



편집(insert) 모드에서 레지스터의 데이터 붙여넣기


문서 작성을 위해 새로 타이핑을 할 때, 타이핑하기 어렵거나 자주 사용하는 문자열 등을 레지스터에 저장해놓고 필요할 때마다 붙여넣기를 한다면 문서 작성에 드는 품이 많이 줄어들 것이다. 


vim에서는 이러한 상황을 위하여 편집 모드에서 레지스터의 데이터를 붙여넣기 할 수 있도록 하고 있다. 


즉, 편집 모드에서 다음과 같은 형식으로 명령어를 입력하면 된다. 


<Ctrl+r>+레지스터명


편집 모드에서 <Ctrl+r> 키를 누르면 커서에 큰따옴표(")가 표시된다. 따라서 레지스터명 앞에 큰따옴표(")를 별도로 타이핑할 필요가 없다. 그 상태에서 a를 누르면 "a 레지스터에 있는 데이터가 붙여넣기 된다.

 

가령, 다음과 같은 글을 작성하고 있다고 해보자. 끝에 현재 작성하고 있는 파일의 이름을 타이핑해야 한다. 이때, <Ctrl+r>키를 누르면 커서에 큰따옴표가 나타난다. 그 상태에서 %(<shift+5>)키를 누르면 현재 작성하고 있는 파일의 이름이 붙여넣기 된다.


다음 사례를 살펴보자.


파일의 이름은   ← 커서가 비어있다. <Ctrl+r>키를 누른다.

파일의 이름은 " ← 큰따옴표(")가 나타남. %(<shift+5>)키를 누른다.

파일의 이름은 test.txt ← 파일 이름이 나타남


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



레지스터에 데이터 저장하기


레지스터는 데이터를 저장해서 다시 사용하는 용도이므로, 레지스터에 데이터를 저장하고 저장된 데이터를 붙여넣기 하는 법을 알면 레지스터 사용법은 전부 알게 된다. 이번에는 우선 레지스터에 데이터를 저장하는 방법을 알아보자.  


레지스터에 데이터를 저장할 때는 명령 모드에서 다음과 같은 형식으로 명령어를 입력한다. 


큰따옴표(")+레지스터명+복사 및 삭제 명령어


복사 명령은 y를 이용한 복사 관련 명령어들고 삭제 명령은 dx를 이용한 삭제 관련 명령들이다. (일일이 그 많은 명령어들을 나열하진 않겠다.)


사용자 임의로 데이터를 저장할 수 있는 레지스터는 읽기 전용 "/":"."%"# 레지스터를 제외한 나머지 레지스터들이다. 


읽기 전용 레지스터를 제외한 모든 레지스터에 사용자가 임의로 데이터를 저장할 수 있지만 알파벳 레지스터("a~"z)를 사용하는 것이 바람직하다. 왜냐하면 알파벳 레지스터 말고 다른 레지스터들은 자동으로 데이터가 저장되기 때문에 편집을 하면 수시로 데이터가 변경될 수밖에 없으므로 사용자가 원하는 데이터를 계속 유지하기 어렵기 때문이다



알파벳("a~"z) 레지스터에 저장하기


알파벳("a~"z) 레지스터에 데이터를 저장할 때, 레지스터를 소문자(a~z)대문자(A~Z)로 지정할 수 있다. "a와 "A는 똑같은 레지스터를 지칭한다. 하지만 데이터를 저장하는 방식을 다르게 한다. 사례를 살펴보자.


다음과 같은 두 개의 행에 작성된 데이터로 이루어진 텍스트가 있고 커서는 첫 번째 행에 있는 문서가 있다고 해보자


aaa

AAA


첫 번째 행에 커서를 두고 명령 모드에서 "cdd 라고 입력하면 "c 레지스터에 첫 번째 행 전체가 복사되어 들어간다그리고 텍스트는 AAA만 남고 커서는 첫 글자에 위치된다. 


aaa → 명령 모드에서 "cdd 라고 입력(현재 행을 삭제해서 "c 레지스터에 저장하라는 명령어)

AAA

 

AAA → 첫 번째 행이 지워지고 AAA라고 되어 있는 한 개의 행만 남고 커서는 첫 글자에 위치함


이 상황에서 :reg 명령으로 레지스터에 저장된 내용을 살펴보면 aaa가 있었던 행이 삭제되면서 그 행의 데이터가 "c 레지스터에 다음과 같이 저장된 것을 확인할 수 있다. 


"c  aaa^J

※ ^J는 개행 문자로 레지스터에는 ^J로 표시되어 있지만 실제로 붙여넣기를 하면 줄바꿈이 일어난다.


이제 남은 행에서 "cyy라고 명령하고 :reg 명령으로 레지스터에 저장된 내용을 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되고 AAA^J로 바뀐 것을 확인할 수 있다. 


AAA → 명령 모드에서 "cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 저장하라는 명령어)

"c  AAA^J    :reg 명령으로 확인한 "c 레지스터에 저장된 데이터


만일, 앞에서 "cyy라고 명령하지 않고 "Cyy라고 명령하고 저장된 데이터 :reg 명령으로 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되지 않고 단지 그 뒤에 AAA^J가 첨가된 것을 확인할 수 있다. 


AAA → 명령 모드에서 "Cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 첨가하라는 명령어)

"c  aaa^JAAA^J    :reg 명령으로 확인한 "c 레지스터에 저장된 데이터


, 알파벳 레지스터에 데이터를 저장할 때, 소문자로 지칭하면 기존의 레지스터에 저장된 데이터를 지우고 새로운 데이터를 저장하고 대문자로 지칭하면 해당 레지스터에 들어있는 데이터 뒤에 새로운 데이터가 첨가(append)된다


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



레지스터의 종류


vim에서 레지스터는 무명(Unnamed) 레지스터숫자 레지스터, 특수키 레지스터, 알파벳 레지스터로 대략 세 가지로 나눌 수 있다.


다시 한 번 강조하지만 레지스터 앞에는 반드시 큰따옴표(")가 붙는다.

 


무명(Unnamed) 및 숫자 레지스터


무명 레지스터큰따옴표(") 두개를 연속으로 붙여넣은 글자로 표시한 레지스터이다. 


숫자 레지스터는 0부터 9까지의 숫자의 앞에 큰따옴표(")를 붙여넣은 글자로 표시한 레지스터들을 말한다. 


우리가 vim에서 편집을 할 때 삭제하거나 복사하는 내용들이 자동으로 레지스터에 저장되는데 주로 무명(Unnamed) 레지스터숫자 레지스터에 저장된다. 


다음이 무명(Unnamed) 레지스터다. 


""  →  가장 최근복사(yank)되거나 삭제(delete)된 데이터 저장


다음은 "0부터 "9까지 10개의 숫자 레지스터다.


"0  →  가장 최근복사(yank)된 데이터만 저장

"1 ~ "9 → "1부터 "9까지 레지스터는 삭제된 데이터가 큐 형식으로 들어간다

즉 "1 레지스터는 가장 최근에 삭제된 데이터가 "2는 2번째로 최근, "9는 9번째로 최근에 삭제된 데이터가 기록된다



특수키 레지스터


특수키 앞에 큰따옴표(")가 붙은 형식으로 표시된 레지스터들이 특수키 레지스터들이다. 


이 레지스터들에는 주로 vim에서 사용한 각종 명령어나 인수 입력한 내용들, 파일 관련 정보 등이 자동으로 저장된다. 


"/ 가장 최근검색한 문자열 저장

": 가장 최근명령 라인에서 실행한 명령어 저장

". 가장 최근에 입력한 데이터(편집 모드에서 입력한 내용들) 저장

"% vim에서 현재 편집하고 있는 파일명 저장

"# 이전에 열었던 파일의 이름 저장

"- 가장 최근한 라인 이내로 삭제한 데이터 저장(하나의 라인을 전부 삭제하지 않고 x나 dw 키 등을 이용하여 일부만 삭제한 경우)



알파벳 레지스터


26개의 알파벳 소문자 a~z에 큰따옴표(")를 붙여 표시한 레지스터들이 알파벳 레지스터들이다. 


알파벳 레지스터는 자동으로 저장이 이루어지지 않고 사용자가 임의로 데이터를 저장하는 용도의 레지스터들이다


"a ~ "z

 


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



레지스터(register) 개요


vim에는 레지스터(register)라는 임시 저장소가 있다


임시 저장소에는 자동적으로 다양한 종류의 정보가 저장되기 때문에 이를 적절히 이용하면 vim으로 작업할 때 일을 매우 쉽게 할 수 있다


우선 레지스터를 한번 들여다보자.


명령 라인에 :reg 라고 입력하고 [Enter]를 치면 현재 사용되고 있는 레지스터 목록이 다음과 같이 나온다.

 


 

우선 레지스터의 이름에는 모두 앞에 큰따옴표(")가 붙는다는 점을 유의해주기 바란다.


"", "0, "1, "2 등으로 세로로 주욱 표시된 것들이 레지스터 항목이다. 


그리고 그 각각의 항목 옆에 있는 것(가령, "2 레지스터의 경우 bbb^J 라는 문자열이 옆에 있다.)이 해당 레지스터에 저장된 내용이다.


그럼 이 레지스터는 왜 이런 내용들이 저장되어 있는 것일까?


사진에 나온 레지스터에 저장된 내용들은 우리가 vim으로 작업하면서 자동으로 임시 저장소에 저장된 것들과 사용자가 임의로 집어넣은 것들이다


그리고 우리는 이 레지스터에 저장된 것을 다음과 같이 꺼내 쓸 수 있다.

 

명령 모드에서 "2p "2 레지스터에 저장되어 있는 것을 p 명령으로 붙여넣기 실행

위의 사진의 경우 "2 레지스터에 저장된 bbb^J 가 붙여넣기가 된다

^J개행 문자로 레지스터에는 ^J로 표시되어 있지만 실제로 붙여넣기를 하면 줄바꿈이 일어난다.


레지스터는 자동으로 저장되는 것들이 있고 사용자가 임의로 레지스터에 저장하는 것들도 있어 이러한 레지스터를 적절히 이용하면 일반적으로 사용하는 <Ctrl+c><Ctrl+v>복사 붙여넣기를 수행하는 것과는 비교할 수 없을 만큼 편하고 다양한 복사 붙여넣기를 할 수 있다.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



복사(copy가 아닌 yank)


vim에서는 복사copy라 하지 않고 '확 잡아당긴다'라는 뜻의 yank라고 부른다. 따라서 복사에 관련된 단축키도 y다. 


명령 모드에서 다음과 같이 키를 누르면 정해진 방식에 따라서 복사(yank)한다. 


yw → 현재 커서 위치에서 다음 단어 첫글자 바로 전까지 복사(yank)

yy or Y  현재 커서가 위치한 행 전체를 복사(yank)


※ 엄밀하게 말하면 복사가 아닌 레지스터로 잡아당기는(yank) 것이다. 레지스터에 대해서는 나중에 다시 설명한다.



붙여넣기(paste가 아닌 put)


복사했으면 이제 붙여넣기를 할 차례다. vim에서는 복사한 것을 붙여넣기 하는 것을 물건 따위를 어딘가에 놓는다라는 의미의 put으로 보고 관련된 단축키도 p


명령 모드에서 다음과 같이 키를 누르면 정해진 방식에 따라서 복사된 내용을 붙여넣기(put)한다.


소문자 p 현재 행에서 커서 다음 칸부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 아래 행에 붙여넣는다.


대문자 P 현재 행에서 커서 위치부터 붙여넣는다(put)

          붙여넣을 내용이 행 전체를 복사한 것일 경우 현재 행의 위쪽 행에 붙여넣는다.



복사와 붙여넣기를 반복하기


복사붙여넣기는 다른 단축키들과 마찬가지로 숫자를 이용하여 반복시킬 수 있다.


10yw 현재 커서 위치에서 10개의 단어를 복사

5yy 현재 커서 위치에서 5개의 행을 복사

5p → 소문자 p5번 반복함

9P → 대문자 P9번 반복함



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



+ Recent posts