2016-07-31 12 views
0

.vimrc에 붙여 넣기 바로 가기를 설정하려고합니다.Vim 바로 가기 붙여 넣기

은 지금까지 나는 Shift+Insert를 매핑 시도했다 :

noremap <S-Insert> <ESC>:paste<CR><S-Insert><ESC>:nopaste<CR> 

... 작동하지 않았다. 또한 시스템 클립 보드 붙여 넣기를 시도했습니다.

noremap ´v <ESC>:set paste<CR>"*p<ESC>:set nopaste<CR> 

...하지만 작동하지 않았습니다. 백틱 `은 여러 개의 사용자 지정 매핑을위한 개인 리더 키입니다. 이 물건에 쉽게 접근 할 수있는 독일어 키보드가 있습니다.

내가 뭘 잘못하고 있니? "*p은 시스템의 클립 보드를 붙여 넣기위한 것이라고 생각했는데 ... <S-Insert>이 정상적으로 명령으로 작동 할 것으로 예상했습니다.

도움이 될 것입니다.

+0

'noremap \'v "* p'을 시도 해 보셨습니까? – melpomene

+0

'"* p는 자체적으로 매핑 외부에서 작동합니까? – melpomene

+0

예, 작동하지 않지만 매핑은 다음과 같습니다./ vim에 붙여 넣기 동작을 매핑 할 수있는 다른 방법이 있습니까? 붙여 넣기 전후에': set paste'와': set nopaste'를 포함하고 있습니까? (그렇지 않으면 indendation이 엉망이된다.) – daniel451

답변

3

당신의 빔 클립 보드 지원 (:echo has('clipboard') 반환 0)로 구축없는 경우, 더 나은 빔을 얻을. 당신의 빔 클립 보드 지원 (:echo has('clipboard') 반환 1)로 구축 경우

, "+p 또는 "*p이있는 당신이 set paste 할 필요가 없습니다 사용합니다.

set clipboard^=unnamed 

또는 함께 * 레지스터와 :

set clipboard^=unnamedplus 

또는 모두

만약 "+{command}"*{command} 당신이 가진 * 레지스터로 이름이 레지스터를 동기화 할 수 있습니다, 당신을 위해 너무 많이 있습니다 다음을 등록하십시오 :

set clipboard^=unnamed,unnamedplus 

그리고 단순히 p을 사용하십시오.

여전히 커스텀 매핑하려면 다음뿐만 아니라 "+p과 같은 몇 가지 이유 <S-Insert>"*p를 들어

nnoremap <key> "*p 
nnoremap <key> "*P 
xnoremap <key> "*p 
xnoremap <key> "*P 
+0

왜'xnoremap'이 아니라'vnoremap'이 아닌가? – melpomene

+0

'vmap'은 visual *와 * select 모드를위한 것이고'xmap'은 visual 모드만을위한 것이기 때문입니다. – romainl

+0

정말 이상합니다. 'has ('clipboard')'는'0'을 반환하지만, 수동으로''* p' '를 입력하면 map'ed 버전 만 붙여 넣기를하지 않습니다. – daniel451

0

을 항상 수동으로 작동하지만 나를 위해 모든 매핑에서 작동하지 않습니다 - 사실에도 불구하고 그 내 "원래" vim에는 클립 보드 지원이 없습니다. :echo has('clipboard')0을 반환합니다.

gVim에서 클립 보드 지원을 제공했지만 gVim을 테스트 한 결과 동일한 문제가있었습니다. :echo has('clipboard')1을 반환합니다. xclip, Manjaro, 아치, 데비안 & 우분투 우주에 존재하는 클립 보드 유틸리티를 설치

nnoremap `v <ESC>:set paste<CR><ESC>:r!xclip -o<CR>:set nopaste<CR><ESC> 

하나는 가지고 않습니다

그러나, 나는 원하는 동작을 얻기 위해 몇 가지 해결 방법을 발견했다.나는 다른 많은 배포판에서도 사용할 수 있다고 생각하지만, 나는 명명 된 것들로 이것을 테스트 해 보았다.

이 명령은 vim을 붙여 넣기 모드로 설정하고 (자동 들여 쓰기 및 내용을 비활성화하여 붙여 넣을 때 일부 코드의 형식이 엉망이되지 않도록), 해당 xclip 명령을 통해 클립 보드 버퍼를 읽고 정상 들여 쓰기 동작으로 재설정합니다. :set nopaste.