Existe uma maneira de inserir um único caractere e sair do modo de inserção?

10

Quando estou examinando o texto e, por exemplo, adicionando reticulares em torno de certas palavras ou aspas ou qualquer outra coisa, é irritante que eu tenha que pressionar Esc ou Ctrl- [após cada inserção. As inserções (e anexos) são diferentes, por .isso não ajuda muito.

Existe algo semelhante ao rque retorna ao modo normal após um único caractere, mas usa o modo de inserção em vez do modo de substituição?

Curinga
fonte
3
Talvez você deva considerar usar (ou estender) o plugin vim-surround , para trabalhar no texto de uma maneira mais significativa .
VanLaser

Respostas:

11

Se não houver (eu não procurei), você pode usar este mapeamento no seu .vimrc:

nnoremap <C-I> i <ESC>r

Ele iinsere, coloca um espaço, ESCimita e inicia uma única letra no lugar r. Isso é mapeado para CtrlI.

É um hack e deixará um espaço suspenso se você pressionar escape antes de digitar uma letra - mas é melhor que nada!

Qix - MONICA FOI ERRADA
fonte
1
Nada mal ... Provavelmente vou usar isso se ninguém conseguir algo melhor. :)
Caractere curinga
2
@Wildcard Eu não percebi o quanto realmente encontrei neste caso de uso sem perceber. Boa pergunta :) Eu também adicionei ao meu próprio vimrc.
Qix - MONICA FOI ERRADA EM
2
Passei a maior parte do dia consertando um monte de descontos. Itálico, código embutido, recuos de cabeçalho, hiperlinks ... todos eles inseridos por um caractere. :) Na verdade, sua solução é perfeita; Vou começar a usá-lo agora.
Curinga
2
Desvantagem: Não é repetível com o .comando. :(
Curinga
1
@Wildcard infelizmente, depois de fazer um pouco de pesquisa, não há como criar um ramo de repetição manual, a .menos que você esteja usando repeat.vim.
Qix - MONICA FOI ERRADA EM
0

Para inserir um caractere no final de uma palavra (em vez de na posição do cursor), use

nnoremap <C-a> a <ESC>r

Isso mapeia para Ctrl + a, você pode mapeá-lo para qualquer outra coisa, é claro.

Eu tenho os dois no meu .vimrcsó assim eu não agito muito :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
Ruto Collins
fonte