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

입질쾌감 물때표

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다