삽입 모드에서 실행 취소


23

삽입 모드에서 마지막으로 수행 한 작업을 실행 취소하는 명령이 있습니까?

방금 잘못된 레지스터에서 텍스트를 붙여 넣었 <C-r>으며 두 가지 옵션이 있습니다.

  1. 방금 붙여 넣은 것을 손으로 삭제하고 다시 시작하십시오.
  2. 일반 모드로 전환하고 치기 u전에 입력 한 텍스트를 치고 잃습니다 <C-r>.

더 좋은 방법이 있습니까?

답변:


16

Vim은 Ctrl-G u명령으로 실행 취소 가능한 변경 범위를 지정하는 기능이 제한되어 있으며 , 이로 인해 실행 취소 시퀀스가 ​​중단됩니다. 만나다

:help i_CTRL-G_u

귀하의 경우 해결책은 다음 <C-R>과 같이 다시 매핑하는 것입니다.

:inoremap <C-R> <C-G>u<C-R>

그런 다음 입력 <C-O>u하면을 입력 한 이후의 변경 사항 만 취소 됩니다 <C-R>. 만나다

:help i_CTRL-O

1
훌륭합니다. 저는이 명령에 대해 몰랐습니다. 타이핑 <C-O>u하고 화면에 결과를 보는 것 (약 4 초) 이 상당히 지연됩니다 . 어떻게 제거 할 수 있을지에 대한 아이디어가 있습니까?
zool

나도 알아 차렸다. 모르겠다. 알아 내려고 노력 할게
garyjohn

안녕하세요, <CR> (ctrl-r) 대신 <CR> (캐리지 리턴)을 의미 할 수 있습니까?
Derwent

아니요. 원래 질문은 <CR>의 동작과 관련이 있으므로 매핑에서 사용됩니다. 그러나 해당 매핑에서 <CR>을 <CR>로 바꾸면 실행 취소 시퀀스가 ​​<CR>에 의해 대신 중단 될 수 있습니다. 더 많은 예는에서 찾을 수 있습니다 :help i_CTRL-G_u.
garyjohn

6

삽입 모드에서 :

  1. 붙여 넣은 텍스트가 한 줄보다 작은 경우 (두 번째 점에서 알 수있는) <C-u>현재 줄에서 커서 앞에있는 모든 문자를 제거하기 만하면 됩니다.

  2. 붙여 넣은 텍스트가 두 줄 이상인 경우 다음과 같이 두 번째 솔루션이 더 잘 작동합니다 <C-o>u.

위의 두 지점은 삽입 모드에서 시작 및 유지되거나 완료됩니다. 그들은 실제로 제안 된 솔루션과 동일하며 짧아졌습니다. :)


6

시도 <C-w>(왼쪽 단어 삭제) 또는 <C-u>(한 번 누르면 커서 앞의 문자 지우기, 두 번째 누르면 줄 바꿈 삭제 ) 시도 할 수 있습니다. 참조 :help i_CTRL-W:help i_CTRL-U.

레지스터에서 많은 것을 붙여 넣는 경우 변경 사항을 취소하는 것이 더 빠를 것입니다. insert-normal-mode를 사용할 수 있습니다 <C-o>(하나의 일반 모드 명령을 실행 한 다음 다시 삽입 모드로 돌아가십시오).

일반적으로 일반 모드로 되돌아 가서 편집 내용을 작은 조각으로 분할하는 것이 도움이되므로 세밀한 실행 취소 가능성이 있습니다.

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