vim에서 복사/붙여넣기 시스템 클립보드와 연동
이 글은 한국 우분투 커뮤니티에서 가져옴을 알립니다.
http://www.ubuntu.or.kr/viewtopic.php?p=89664
1. 이 기능의 필요성
물론 마우스로 선택한 후 복사나 붙여넣기를 해도 되지만..
이렇게 하면 vim이 아니라 시스템에서 처리하는 것이므로, 줄번호 까지 붙여 넣어집니다.
또, 마우스로 선택하는 것 보다는 키보드가 편할 뿐 더러, 마우스로 선택하면 자동으로 스크롤이 안됩니다.
2. 사전지식
v : 컬럼단위 비주얼모드
Shift+v : 줄단위 비주얼모드
Ctrl+v : 블럭 비주얼모드
v 키를 다시 누르면 정상모드로 복귀합니다.
비주얼모드에서 화살표로 이동한 후 y로 vim내의 클립보드로 복사할 수 있습니다.
블럭단위가 아닐경우 Y키를 누르면 줄단위로 vim내의 클립보드로 복사 됩니다.
그리고 난 후 p키로 뒤에, P키로 앞에 붙여넣을 수 있습니다.
vmap, vnoremap 명령은 키매핑을 비주얼모드에서만 동작하게 합니다.
편집모드에서 Ctrl+v키는 특수문자 입력키이므로, v[nore]map으로 매핑하면
편집모드에서는 특수문자 입력키로 사용됩니다.
3. 준비작업
시스템 클립보드와 연동하기 위해선 클립보드에서 얻기 및 붙여넣기를 할 수 있는 프로그램이 필요합니다.
우분투에서의 설치
sudo apt-get install xclip
젠투에서의 설치
webterror ~ # emerge -pv xclip These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] x11-misc/xclip-0.12 62 kB Total: 1 package (1 new), Size of downloads: 62 kB * IMPORTANT: 6 news items need reading for repository 'gentoo'. * Use eselect news to read news items.
4. vim에 기능 추가
#~/.vimrc의 내용
"붙여넣기시 자동들여쓰기를 하지 않게함 set paste "yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴 vnoremap y y`> "라인단위 yank후에 마크위치로 이동하기에, 다시 커서를 이동시킴 vnoremap Y Y`> "붙여넣기 후 붙여넣기된 끝으로 커서이동 noremap p p`] "비주얼블럭의 내용을 클립보드로 붙여넣기 vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR> "Control+v키가 비주얼 블럭모드 키라서 Control+w로 대체 (에디트플러스의 Alt+w에서 착상) noremap <C-w> <C-v> "클립보드의 내용을 vim으로 붙여넣기 nmap <C-v> :call setreg("\"",system("xclip -o -selection clipboard"))<CR>p