vim에서 붙여 넣은 텍스트 만 실행 취소하려면 어떻게합니까?


9

TL; DR; version-삽입 모드로 들어간 이후 입력 한 다른 텍스트를 취소하지 않고 OS 복사 버퍼에서 붙여 넣은 텍스트를 어떻게 취소합니까?

더 긴 설명 :

  1. OS 복사 버퍼에 무언가를 넣습니다 (예 : 일부 텍스트를 강조 표시 Command-c하고 Mac에서 수행)
  2. vim에서 삽입 모드로 이동 ( i)
  3. (예를 들어 뭔가를 입력 asdf)
  4. 삽입 모드를 종료하지 않고 복사 버퍼에서 vim으로 붙여 넣기 ( Command-vMac의 경우)
  5. 히트 escape
  6. 붙여 넣기를 취소합니다 ( u)

마지막으로 삽입 모드를 시작한 이후의 모든 작업을 취소합니다. 즉, asdf붙여 넣은 모든 텍스트와 함께 지 웁니다 .

어떻게합니까 단지 에 붙여 넣은 텍스트를 취소? 붙여 넣은 텍스트를 실행 취소하는 옵션을 사용하려면 텍스트를 붙여 넣기 전에 항상 삽입 모드를 해제하고 다시 들어가야합니까?

답변:


3

한 가지 방법은 붙여 넣기 전에 명시 적으로 삭제 한 후 삽입 모드로 돌아가는 것입니다. 붙여 넣기 명령을 확장하면 붙여 넣기 전에 실행 취소 지점을 자동으로 설정할 수도 있습니다 .

" Any text fragment pasted in insert mode should be undone separately, without
" destroying what was typed before.
inoremap <C-R> <C-G>u<C-R>

위는 내장 i_CTRL-R명령에 대한 것입니다. 나는 방법을 모른다 Command-vMacVim에서 구현됩니다 만, 붙이는 <C-G>u받는 :imap명령은 동일한 효과를 달성한다.


1
매력처럼 작동합니다! 어쨌든 붙여 넣기를위한 표준 vim 방법을 사용해야합니다.
Javid Jamae

이를 추가하기 만하면됩니다 :h i_CTRL-G_u(즉, 삽입 모드에서 "실행 취소 시퀀스 중단, 새로운 변경 시작").
toraritte

2

MacVim에서는 Edit > Paste바로 가기를 재정의하기 위해 메뉴 항목 을 매핑 해제해야합니다. 그러면 Macmdim에서 Cmd-V D-v를 각 모드의 해당 명령에 다시 매핑 할 수 있습니다 . 나는 이것을 내 ~/.gvimrc것에 추가 했고 이제는 모든 것이 훌륭하게 작동합니다.

macmenu Edit.Paste key=<nop>
noremap <D-v> "*P
cnoremap <D-v> <C-r><C-o>*
inoremap <D-v> <C-g>u<C-r><C-o>*

<C-g>u단지 실행 취소 기록을 해결하기 위해 삽입 모드에 필요하다 noremapcnoremap일반 및 명령 모드에서 기본 붙여 넣기 동작을 복원 단순히입니다.

나를 올바른 방향으로 안내해 주신 Ingo Karkat에게 감사드립니다.


0

실제로 해결책은 먼저 명령 모드 (예 :)로 이동 Esc하여 삽입 모드를 다시 입력해야하지만 수동으로 입력하는 경우에만 작동하지만 테스트에서 "임의로"작동하지 않는 것 같습니다 ~/.vimrc. 구글은 전혀 도움이되지 않습니다.

나는이 문제를 해결하려고 많은 시간을 보내고 내 경우에 그 이유를 알아 냈습니다.

붙여 넣기 키를 터미널의 기존 붙여 넣기 키와 동일하게 매핑하지 마십시오

예를 들어 Ctrl+Shift+VKonsole 터미널에 붙여 넣을 수 있지만이 키 <C-S-v>를 할당 ~/.vimrc하면 "여러 개의 페이스트 대신 단일 페이스트에만 실행 취소"가 작동하지 않습니다.

내 경우 <C-v>에는 <C-S-v>다음 대신 사용해야 합니다 .

inoremap <C-v> <Esc>"+pi<Esc>i<Right><Right>

경우가 다를 수 있지만 요점은 동일합니다. 기존 터미널 에뮬레이터 키와 동일한 붙여 넣기 키 충돌을 할당하지 마십시오.

터미널 붙여 넣기 키를 설정 Ctrl+V하고 <C-v>작동을 멈추지 만 <C-S-v>작동을 중지 하여이 결론을 100 % 입증 했습니다.

이 vim은 너무 민감하고 이상합니다. i올바른 커서 위치에서 작동하려면 수동으로 2 개의 오른쪽 키 를 사용해야 한다는 것을 알았습니다. 즉 i, 2 개의 오른쪽 키도 넣어야 합니다 ~/.vimrc. 경우가 다를 수 있지만 요점은 동일합니다. ~ / .vimrc의 키 + 순서가 100 % 수동으로 입력 한 것과 일치하는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.