vim 단축키 만들기


vim에는 정말 다양한 기능과 굉장히 많은 명령어가 있다. 하지만 이 많은 기능과 명령어를 모두 사용할 줄 알아야 하는 것은 아니다. 오히려 이러한 다양한 명령과 기능들을 둘러보고 나서 자신에게 필요한 것만 최적화 하는 것이 바람직하다. 특히, 자주 쓰는 명령어나 기능들을 간단한 키로 실행할 수 있도록 만들어 놓으면 작업이 대단히 수월해질 것이다. 이 때 자주 쓰는 명령어나 기능들을 간단한 키로 만들어주는 것이 키 매핑(mapping)이다. , 사용자 지정 단축키인 셈이다.

 

우선 어떤 키 매핑들이 사용되고 있는지 확인해보자


명령 라인에 :map 사용 중인 키 매핑 리스트를 화면에 표시한다.


실행해 보면 굉장히 많은 키 매핑이 사용중인 것을 볼 수 있을 것이다. 이미 지정된 키 매핑을 사용하는 것은 나중 문제로 하고 일단, 우리가 원하는 키 매팽을 해보는게 좋을 것 같다. 


위에서 사용한 명령라인에 :map 명령어 뒤에 [단축한 키][단축될 명령어]를 다음과 같이 배치하면 [단축될 명령어][단축한 키]매핑(mapping) 시킨다.


명령 라인에 :map [단축한 키] [단축될 명령어]


[단축될 명령어][단축한 키]매핑(mapping)


가령, 다음과 같다.


명령 라인에 :map <F2> :tabnew<CR>


기능키인 <F2> 키에 :tabnew<CR>매핑(mapping) 

명령 모드에서 기능키 <F2>를 누르면 :tabnew 명령어가 실행되어 새로운 탭이 열리면서 이름 없는 빈 파일이 표시됨


※ <CR>vim 내에서 [Enter]키를 입력했음을 의미한다. 만일, 위의 사례에서 <CR>을 집어넣지 않은 채로 매핑을 하면 <F2>키를 눌렀을 때 명령 라인에 :tabnew 명령어가 나타나지만 [Enter]명령어가 입력되지 않으므로 아무 일도 일어나지 않는다.



.vimrc 에 설정한 키 매핑 기록하기


지금 열심히 키 매핑으로 원하는 단축키를 만들어놨어도 vim을 끄고 다시 켜면 처음부터 다시 설정을 해줘야 한다. 단축키는 앞으로도 지속적으로 사용할 것이므로 vim의 설정 파일인 .vimrc에 설정한 키 매핑을 기록하여 매번 vim을 실행할 때마다 다시 설정하지 않도록 조치할 필요가 있다. 


우리는 앞서 vim의 설정 파일인 .vimrc에 대해서 간단하게 둘러본 바가 있으니 이를 참조하기 바란다.


~/.vimrc 파일을 열어 다음 내용을 가장 마지막 행에 추가한다


map <F2> :tabnew<CR>

.vimrc에 기록할 때는 명령 라인에 명령어를 입력할 때 앞에 붙는 콜론(:)을 쓰지 않는 점에 주의


이제 vim을 닫고 다시 열어서 명령 라인에 :map 을 입력하여 사용중인 키 매핑 리스트를 확인하면 아래과 같이 등록된 것을 확인할 수 있다.



Anki 파일


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


061 단축키 만들기-키 매핑(mapping).apkg


Backquote(`)와 작은따옴표(')의 차이


앞서 배운 것처럼 backquote(`)와 마킹한 알파벳을 같이 누르면 마킹된 위치로 이동한다.


이때, backquote(`) 대신 작은따옴표(')와 마킹한 알파벳을 같이 누르면 마킹된 위치가 속한 행의 공백이 아닌 첫 글자로 이동한다


다음은 backquote(`)작은따옴표(')를 이용한 경우다. 


명령 모드 `a : 같은 파일 내에서 마킹된 위 a로 이동

명령 모드 'a : 같은 파일 내에서 마킹된 위치 a가 속한 행의 공백이 아닌 첫 글자로 이동

명령 모드 `A : 마킹된 A로 이동

명령 모드 'A : 마킹된 위치 A가 속한 행의 공백이 아닌 첫 글자로 이동


작은따옴표(')와 backquote(`)가 서로 비슷하면서도 조금씩 다른 역할을 하는 것을 알 수 있다.


 

마킹 관련 몇 가지 사용법


vim 커서가 이전에 있었던 위치를 자동으로 마킹해준다. 물론이것은 커서의 모든 위치를 일일이 지역 마킹한다는 뜻은 아니다이동 명령을 이용하여 커서의 위치가 급격하게 변화할 때 직전에 커서가 있던 위치를 자동으로 지역 마킹한다


가령, 탐색된 문자열을 n이나 N로 점프하는 경우 또는, 명령 모드에서 gg키로 문서의 처음으로 이동하거나 G키를 눌러 문서의 마지막으로 점프하는 경우 등 같은 경우에 자동으로 지역 마킹이 이루어진다.


이러한 자동 지역 마킹을 알아두면 작업을 하면서 주요 위치들 사이를 손쉽게 오가면서 작업을 할 수 있다. 


사용법은 아래과 같다. 


명령 모드에서 ``(Backquote 연속 두 번 누름)


같은 파일 내에서 현재 위치로 점프해오기 전 커서 위치로 이동


명령 모드에서 ''(작은따옴표 연속 두 번 누름)


같은 파일 내에서 현재 위치로 점프해오기 전 커서가 위치한 행의 공백이 아닌 첫 글자로 이동


이렇게 되면 backquote(`) 두개 또는 작은따옴표('두개를 연달아 연타하면서 간단하게 이전에 작업했던 곳으로 돌아갈 수 있게 된다. , 이것은 같은 파일 내에서만 사용할 수 있는 지역 마킹이다.



또, 열심히 작업하다가 잠시 끊고 쉬었다가 다시 작업을 할 때, 이전에 작업하던 부분에서 연속으로 작업하길 원할 수 있다. 이런 경우를 위하여 vim은 해당 파일이 어느 위치에서 작업을 끝냈는지 자동으로 지역 마킹을 해둔다


사용법은 다음과 같다. 


명령 모드에서 `"(Backquote큰따옴표)


전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동


명령 모드에서 '"(작은따옴표큰따옴표)


이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 공백이 아닌 첫 글자로 이동


마지막으로 마킹된 내용을 확인해보고 싶을 때는 명령 라인에 :marks 라고 명령어를 입력하면 된다.

 

그러면 아래와 같이 전역 마킹과 현재 파일에 지정된 지역 마킹 그리고 파일 마킹들이 전부 화면에 표시된다.




Anki 파일


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



원하는 위치를 마킹해서 이동하기


우리가 이동하고 싶은 위치를 마킹하고 해당 위치로 빠르게 이동하면서 작업을 하면 무척 효율적인 작업이 가능해질 것이다.

 

원하는 위치를 마킹하는 방법과 마킹한 위치로 이동하는 방법은 다음과 같다.

 

원하는 위치에 커서를 두고 명령 모드에서 m[임의의 알파벳]

 → 해당 위치를 알파벳으로 마킹


`[마킹한 알파벳] 해당 알파벳이 마킹된 위치이동


작은 따옴표(')와 비슷해 보이는 ` 이 표시는 backquote 또는 backtick 이라고 부른다작은 따옴표(')와는 다르므로 주의해야 한다. 키보드에서는 숫자키 1번 바로 왼쪽에 있는 키이다



마킹할 때 사용하는 알파벳은 대문자인지 소문자인지에 따라서 지역 마킹과 전역 마킹으로 그 성격이 다르다.


알파벳 소문자인 a~z로 마킹하면 지역 마킹이 된다.


지역 마킹이란 같은 파일 내부에서만 마킹한 위치로 이동할 수 있는 마킹이다. , test.txt에서 마킹을 했다면 test.txt 파일에서 작업을 할 때만 마킹한 위치로 이동할 수 있다.

 

알파벳 대문자인 A~Z로 마킹하면 전역 마킹이 된다.


전역 마킹이란 다른 파일에서도 전역 마킹으로 지정된 위치로 이동할 수 있는 마킹이다

서로 다른 파일들 사이에서도 얼마든지 이동이 가능하다는 것이다. 이게 어느 정도 수준이냐면, 전역 마킹으로 지정한 위치는 해당 파일을 별도로 열지 않아도 마킹한 곳으로 이동이 가능하다. 가령, test.txt 파일에 전역 마킹 A로 위치를 지정해 놓았을 때, test.txt 파일을 열지 않아도 다른 파일에서 명령 모드 `A 키를 누르면 test.txt 파일이 열리면서 해당 위치로 이동한다.

 


숫자 0~9로 마킹된 파일 마킹


파일 마킹은 우리가 직접 지정하는 것이 아니라 ~/.viminfo 파일에서 자동으로 지정하는 것으로 vim이 알아서 지정하는 것이다. 우리가 파일 마킹을 할 수는 없지만 명령모드에서 `1과 같이 입력하면 해당 파일로 이동할 수 있다. 

 

 

마킹한 위치와 마킹에 사용된 알파벳들은 파일을 닫아도 그대로 유지되므로 언제든지 재사용할 수 있다. 


이것이 재사용될 수 있는 이유는 해당 마킹에 대한 정보가 .viminfo 파일에 저장되기 때문이다.

 

아래는 .viminfo 파일에 저장된 마킹관련 정보들이다.



 

마킹으로 이동하기에 대한 간단한  사용례는 다음과 같다. 


명령 모드에서 ma 

 → 현재 파일의 현재 커서 위치를 지역 마킹 a지정


명령 모드에서 `a

 → 지역 마킹 a로 지정된 위치이동(, 현재 파일에 지정되어 있을 경우)


명령 모드에서 `4 

 → 파일 마킹 4번의 위치이동(파일이 열려있지 않더라도 해당 파일이 열리면서 화면이 이동한다.)


명령 모드에서 mB 

 → 현재 파일의 현재 커서 위치를 전역 마킹 B지정


명령 모드에서 `B 

 → 전역 마킹 B로 지정된 위치이동(파일이 열려있지 않더라도 해당 파일이 열리면서 화면이 이동한다.)


Anki 파일


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



+ Recent posts