티스토리 뷰


리눅스에서 개발하실 때 vim(vi)을 많이들 사용하실텐데요.


vim은 개발자가 어떻게 사용하느냐에 따라 세상에서 가장 멍청한 에디터가 될 수도, 세상에서 가장 똑똑한 에디터가 될 수도 있습니다. :)



오늘은 vim에서 주석을 단축키로 달 수 있는 방법을 알려드리겠습니다.

구글에 검색해서 여러 글들을 보셨다면 아시겠지만, 다양한 방법들이 있는데 이것은 제가 사용하는 방법입니다!




vim의 편리한 기능중 하나인 Key Mapping을 이용한 방법입니다.



먼저 vimrc에 입력해야 될 스크립트를 말씀드리고 간략한 설명을 하겠습니다.


vi를 이용해 vimrc를 열어줍시다.

$ vi ~/.vimrc


그리고 아래의 스크립트를 적당한 곳에 입력합니다.

"============== 주석 매크로 ==============

func! CmtOn()    "주석 on

exe "'<,'>norm i//"

endfunc


func! CmtOff()    "주석 off

exe "'<,'>norm 2x"

endfunc


vmap <c-c> <esc>:call CmtOn() <cr>

vmap <c-x> <esc>:call CmtOff() <cr>

nmap <c-c> <esc>v:call CmtOn() <cr>

nmap <c-x> <esc>v:call CmtOff() <cr>


이렇게 작성했으면 저장하고 나옵니다.


컨트롤+C : 주석 달기

컨트롤+X : 주석 지우기


가 되며, 비주얼블록을 이용하면 여러줄을 동시에 주석처리할 수 있습니다.

비주얼블록은 v키나 V키를 눌렀을때 생기는 vim의 블록을 뜻합니다~


참고로 이 스크립트는 C의 주석 기준으로 작성되었기 때문에 // 를 주석부호로 사용합니다.


# 을 주석부호로 사용하는 언어에서 사용하고 싶으시면, 
CmtOn함수의 //를 #으로, 
CmtOff 함수의 2x를 1x로 변경하여 주시면 됩니다!




그리고 아래의 상세 설명은 필요하신 분만 보셔도 됩니다~


상세설명)

2개의 함수와 4개의 키맵 옵션이 있는 것을 알 수 있습니다.



'<,'> 는 vim의 비주얼모드일때 비주얼블록의 범위를 뜻합니다. 따라서 v키를 이용하여 비주얼블록을 쌓은 범위에 특정한 명령을 내리기 위함입니다.

norm i// 는 노말모드에서 // 를 추가하겠다는 의미이고,

norm 2x 는 노말모드에서 앞의 2글자를 지우겠다는 의미입니다.


또한 동일한 단축키로 한줄 주석처리나, 여러줄 주석처리를 함께 사용하기 위해 vmap과 nmap을 이용하였습니다.


vmap은 visual/select 모드에서의 mapping 키를 지정하는 옵션이고

nmap은 normal 모드에서의 mapping 키를 지정하는 옵션입니다.


nmap에 v가 하나 더 붙은 것을 확인할 수 있습니다. 커서가 위치한 라인에 스스로 비주얼모드를 걸어서 주석함수를 불러오기 위함입니다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함