Use backspace para modificar o comando atual no modo normal?

9

Às vezes, ao digitar um comando no modo normal, você pode digitar um erro, por exemplo, se eu pretender digitar 10dk, posso começar a digitar acidentalmente 19d.

Como o comando ainda não foi concluído / confirmado, é possível excluir as chaves incorretas usando o backspace, como tal: em 19d<backspace><backspace>0dkvez de ter que pressionar escape e tentar novamente o comando?

Pergunta secundária: Existe um termo Vim para a estrutura de dados que contém o comando atual antes de ser confirmado?

HellaMad
fonte
11
Provavelmente, isso pode ser solicitado como um recurso em versões mais recentes!
SibiCoder # 25/16
3
Relacionado: vi.stackexchange.com/questions/570/…
SibiCoder
4
O AFAIK não é possível - mas, como essas seqüências são curtas, não tenho certeza de qual ganho seria esse recurso. Quando você tem que repetir a sequência inteira, pelo menos você é "forçado" a repeti-la até que não cometa esses erros;) (ou seja - repetir cria caráter! Trocadilho intencional).
VanLaser
11
@VanLaser O pior pesadelo de Vimmer é ser "forçado" a repetir alguma coisa;) Além disso, sou péssimo em digitar e tenho um teclado em branco, para que não seja incomum eu estragar um comando 256 vezes antes de acertar.
HellaMad
4
O que poderia dar errado quando um datilógrafo ruim usa um teclado em branco?
Romainl 25/05

Respostas:

3

Não há como fazer isso e é normal que não exista: os comandos do modo normal geralmente são bem curtos e podem ser cancelados Escse você mexer.

Uma solução possível seria usar o :normalcomando Isso torna o processo mais longo, mas, por exemplo, se você digitar :normal 10jna linha de comando, o Vim será executado 10jcomo se você o digitasse no modo normal. (Veja :h :normal)

Você também pode adicionar essas linhas ao seu .vimrc:

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

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

Eles criam um mapeamento (aqui, F4mas usam o que você quiser) que chamará a função NormalModeCommand().

A função permite que você digite uma sequência na linha de comando e execute a sequência digitada como um comando no modo normal. Ao digitar a sequência na linha de comando, você pode corrigi-la como qualquer outro comando. Claro que não é o ideal, mas mais uma vez o Vim não foi feito para isso.

statox
fonte