O Vim tem algo parecido com C-w no modo de inserção, o qual exclui uma palavra do Word?

5

No modo de inserção, o Vim excluirá de volta um word se você pressionar <C-w> (controle + w). Existe um comando similar que exclui um Word ?

(Por exemplo, excluiria todos os http://www.example.com em vez de apenas a parte com .)

Se não, estou pensando em mapear <C-BS> (control + backspace) para fazer isso.

    
por Nathan Long 04.12.2012 / 16:10

3 respostas

2

Não, não há nenhum comando interno, mas o seguinte deve ser o truque:

:inoremap <silent> <expr> <C-S-BS>
\   col('.') == 1 ?
\       '<C-w>' :
\       col('.') >= col('$') ?
\           '<C-o>:normal! Bd$<CR>' :
\           '<C-o>:normal! m"Bdg'"<CR>'

Quando no início da linha, ele apenas executa o comando <C-w> para unir-se à linha anterior. No final da linha, volta ao Word e apaga o resto. Caso contrário, ele estabelece uma marca temporária m" , retorna um WORD B e exclui essa parte do texto.

Edit: Corrigido para o cursor no final da linha

    
por 04.12.2012 / 16:42
1

Se eu entendi, você está em um arquivo no modo de inserção com o cursor em um char em algum lugar 'com' e pressiona <c-w> para excluir http://www.example.com e permanecer no modo de inserção?

blabla ffd http://www.example.com fds fsdf dsfd

este mapa de chaves faz o truque: imap <C-w> <ESC>lciW

<ESC> - > entrar no normal

l - > ir para a direita (porque quando apertar ESC vai para a esquerda)

ciW - > substituir todo o Word e entrar no modo de inserção

    
por 12.02.2013 / 17:37
-1

enquanto estiver no modo de inserção, Ctrl+O then dB

    
por 14.01.2017 / 18:15

Tags