Em algum momento, meu Vim desfiz uma palavra inteira quando eu batesse u
.
[i]typing some words[C-c][u]
Resultaria em
typing some
No entanto, a granularidade de desfazer parece ter sido alterada para excluir uma letra de cada vez.
[i]typing some words[C-c][u]
Resulta em
typing some word
Lembro-me de ler algo sobre como personalizar a granularidade de desfazer no Practical Vim, mas não consigo me lembrar de como controlá-lo. Qualquer ajuda apreciada!
:help
arquivos sobre ele ... Consulte: Como depuro meu arquivo vimrc? ... Além disso, usando<C-c>
para sair do modo de inserção pode ter efeitos colaterais ( ver este ) e pode ser parte do problema ... Eu sugiro usarEsc
ou<C-[>
( ver este )Respostas:
Quebrando manualmente a sequência de desfazer
Você pode interromper manualmente a sequência de desfazer no modo Inserir com
<C-G>u
. Da ajuda :Exemplo
Isso deixará você com o texto
Divisão de comandos
Solução automática
Controle de nível inferior de granulação mais fina
Aqui está um pequeno trecho do VimScript usado
<C-G>u
para criar quebras de desfazer quando você começa a excluir texto e também quando você começa a inserir texto novamente após uma exclusão.Notas
Isto irá funcionar para
<BS>
,<C-W>
(excluir uma palavra), e<C-U>
(excluir para o início da linha). Se houver mais maneiras de excluir no modo Inserir, elas poderão ser suportadas adicionandoinoremap
chamadas adicionais no final.fonte
<C-G>u
, que já é tarde demais.i
seguido de uma frase longa seguida de backspace para remover parte do que escrevi (tudo no modo de inserção). Então percebo que não deveria ter retrocedido e que o que eu escrevi estava bem. Desfazer, mas todo o texto inserido será desfeito. Então, ou eu fiquei com nenhuma frase longa ou a parte que não é retrocedida. É impossível recuperar a parte posterior. Existe uma maneira de dizer ao vim para quebrar a sequência de desfazer no backspace? (Agora que eu digo, omap
backspace é uma opção, é claro).inoremap <CR> <C-G>u<CR>
para que cada desfazer seja contido em uma única linha (não desfaz mais o parágrafo inteiro que você estava digitando sem parar).