Vim에서 복사/붙여넣기 시스템 클립보드와 연동하기

  1. 이 기능의 필요성

물론 마우스로 선택한 후 복사나 붙여넣기를 해도 되지만…
이렇게 하면 vim이 아니라 시스템에서 처리하는 것이므로, 줄번호 까지 붙여 넣어집니다.
또, 마우스로 선택하는 것 보다는 키보드가 편할 뿐 더러, 마우스로 선택하면 자동으로 스크롤이 안됩니다.

  1. 사전지식
    v : 컬럼단위 비주얼모드
    Shift+v : 줄단위 비주얼모드
    Ctrl+v : 블럭 비주얼모드

v 키를 다시 누르면 정상모드로 복귀합니다.

비주얼모드에서 화살표로 이동한 후 y로 vim내의 클립보드로 복사할 수 있습니다.
블럭단위가 아닐경우 Y키를 누르면 줄단위로 vim내의 클립보드로 복사 됩니다.
그리고 난 후 p키로 뒤에, P키로 앞에 붙여넣을 수 있습니다.

vmap, vnoremap 명령은 키매핑을 비주얼모드에서만 동작하게 합니다.
편집모드에서 Ctrl+v키는 특수문자 입력키이므로, v[nore]map으로 매핑하면
편집모드에서는 특수문자 입력키로 사용됩니다.

  1. 준비작업
    시스템 클립보드와 연동하기 위해선 클립보드에서 얻기및 붙여넣기를 할 수 있는 프로그램이 필요합니다.

[code:2wurvkxa]sudo apt-get install xclip[/code:2wurvkxa]
4. vim에 기능 추가

#~/.vimrc의 내용

[code:2wurvkxa]
"붙여넣기시 자동들여쓰기를 하지 않게함
set paste
"붙여넣기 모드 선택키
set pastetoggle <Ins>

"yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴
vnoremap y y&gt; &quot;라인단위 yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴 vnoremap Y Y>
"붙여넣기 후 붙여넣기된 끝으로 커서이동
noremap p p`]

"비주얼블럭의 내용을 클립보드로 붙여넣기
vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("&quot;"))<CR>

"Control+v키가 비주얼 블럭모드 키라서 Control+w로 대체 (에디트플러스의 Alt+w에서 착상)
noremap <C-w> <C-v>

"클립보드의 내용을 vim으로 붙여넣기
map <C-v> :call setreg("&quot;",system("xclip -o -selection clipboard"))<CR>p
[/code:2wurvkxa]

터미널에서 vim을 사용해야 하는 상황이 아니라면 gvim을 사용하시고 기본적으로 지원하는 기능을 사용하시면 될 듯 합니다.
참고로 gvim을 사용할 경우 "*" 버퍼나 "+"버퍼가 X와 Gnome clipboard가 연동되어 있습니다.

정말 감사합니다. 드디어 복사 붙여넣기를 vim에서 쓸 수 있게 되었네요.

쿠분투라서 gvim 깔기에는 gtk 가 너무 부담스러워서 클립보드를 못 쓰고 있었는데, xclip을 알게 되서 클립보드를 쓸 수 있게 되었네요.

감사합니다. :D

xclip 안 쓰고도 가능합니다.
한번 읽어보세요. ^^

viewtopic.php?f=9&t=24008&p=110274#p110274