백 스페이스를 사용하여 일반 모드에서 현재 명령을 수정 하시겠습니까?


9

때로는 일반 모드에서 명령을 입력 할 때 오타를 만들 수 있습니다 (예 : 입력하려는 경우 10dk실수로 입력을 시작할 수 있음) 19d.

명령이 아직 완료 / 커밋되지 않았으므로 19d<backspace><backspace>0dk이스케이프를 사용하여 다음과 같이 백 스페이스를 사용하여 잘못된 키를 삭제할 수 있습니까?

사이드 질문 : 커밋되기 전에 현재 명령을 보유하는 데이터 구조에 대한 Vim 용어가 있습니까?


1
아마도 이것은 최신 버전의 기능으로 요구 될 수 있습니다!
SibiCoder


4
AFAIK는 가능하지 않지만 이러한 시퀀스는 짧기 때문에 이러한 기능이 어떤 이점을 얻을 수 있는지 잘 모르겠습니다. 전체 시퀀스를 다시 시도해야 할 때 최소한 실수를 반복하지 않을 때까지 반복하도록 "강제로"설정되어 있습니다.
VanLaser

1
@VanLaser Vimmer의 최악의 악몽은 반복 무언가에 "강제"되고있다) 또한, 나는 입력 빨아하고있는 빈 키보드 가 바로 그것을 얻기 전에 명령까지 혼란에 저를 위해 256 번 드문 일이 아니에요 그래서.
HellaMad

4
나쁜 타이피스트가 빈 키보드를 사용하면 어떻게 될까요?
romainl

답변:


3

그렇게 할 수있는 방법이없고없는 것이 일반적입니다. 일반 모드 명령은 일반적으로 매우 짧으며 Esc엉망 이 되면 취소 할 수 있습니다 .

가능한 해결 방법은 :normal명령 을 사용하는 것 입니다. 예를 들어 :normal 10j명령 줄에 입력하면 프로세스가 더 길어 지지만 Vim은 10j일반 모드에서 입력 한 것처럼 실행 됩니다. (참조 :h :normal)

다음 줄을 추가 할 수도 있습니다 .vimrc.

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

그들은 F4함수를 호출 할 매핑을 생성합니다 (여기서 원하는 것을 사용 하십시오 ) NormalModeCommand().

이 기능을 사용하면 명령 줄에 문자열을 입력 한 다음 일반 모드 명령으로 입력 한 문자열을 실행할 수 있습니다. 명령 행에 문자열을 입력하면 다른 모든 명령처럼 문자열을 정정 할 수 있습니다. 물론 그것은 이상적이지는 않지만 다시 한번 Vim은 그렇게하지 않습니다.

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