Agora estou mudando para o VIM
TextMate. Achei ^+W
no modo INSERT muito útil. No entanto, gostaria de excluir não apenas a palavra antes do cursor, mas também a palavra depois ou ao redor do cursor.
Eu pesquisei no Google, mas a única coisa que encontrei foi ^+W
excluir a palavra ANTES do cursor.
vim
keyboard-shortcuts
Mantas
fonte
fonte
imap <C-d> <C-o>diw
funciona também. Também não cria um ponto de desfazer, o que <Esc> praticamente sempre cria.Modo normal:
fonte
da)
eci)
nunca pensei nisso!.vimrc
arquivo da seguinte maneira:nmap <Leader>d daw
enmap <Leader>c caw
aw
é um exemplo de seleção de objetos. Você pode tentar a seleção de objetos no modo visual para ver qual efeito eles têm: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectEu acho que é só
daw
fonte
a
é um comando para,Append text after the cursor [count] times.
mas comodaw
funciona?d
determina que você estará 'excluindo'. O 'a' é um tipo de parâmetro, especificando que a exclusão deve incluir um delimitador. Finalmente, o 'w', outroparameter
- se você desejar - especifica que umaword
unidade será excluída.dw
edaw
?dw
será excluído do cursor até o final da palavra, enquantodaw
excluirá a palavra inteira junto com um espaço.diw
excluirá a palavra inteira sem tocar em espaço em branco ao redor dela.O abaixo funciona para o modo Normal: concordo com a resposta de Dan Olson de que você provavelmente deve estar no modo normal para a maioria das exclusões. Mais detalhes abaixo.
Se o cursor estiver dentro da palavra:
diw
excluir na palavra (não inclui espaços)daw
para excluir ao redor da palavra (inclui espaços antes da próxima palavra).Se o cursor estiver no início da palavra, basta pressionar
dw
.Isso pode ser multiplicado adicionando os números usuais de movimento, por exemplo, 2w para avançar duas palavras, de modo que d2w exclui duas palavras.
Modo de inserção ^ w
A idéia de usar hjkl para movimento no Vim é que é mais produtivo manter as mãos na linha de casa. No final de uma palavra ^ w funciona muito bem para excluir rapidamente a palavra. Se você entrou no modo de inserção, inseriu algum texto e usou as teclas de seta para terminar no meio da palavra que foi contra a filosofia da linha inicial.
Se você estiver no modo normal e quiser alterar a palavra, basta usar o botão
c
(alterar) em vez ded
(excluir) se quiser alterar completamente a palavra e entrar novamente no modo de inserção sem precisar pressionari
para voltar. para digitar.fonte
Você quer dizer como?
fonte
dw
não excluirá além de um hífen ou outra pontuação.Para excluir todos os caracteres entre dois espaços em branco, no modo normal:
Para excluir apenas uma palavra:
fonte
Parece que não há nenhuma maneira integrada de fazê-lo no modo de inserção, que era a questão. Algumas das outras respostas estão corretas para o modo normal, além de apontar que um mapeamento personalizado pode ser criado para adicionar a funcionalidade no modo de inserção.
Honestamente, você provavelmente deve fazer a maior parte de sua exclusão no modo normal. É interessante saber o que é, mas não tenho certeza se consigo pensar em uma situação em que prefiro fazê-lo do que esc para entrar no modo normal e ter os comandos de exclusão mais poderosos à minha disposição.
O Vim é muito diferente de vários outros editores (incluindo o TextMate) dessa maneira. Se você o estiver usando produtivamente, provavelmente descobrirá que não passa muito tempo no modo de inserção.
fonte
Para excluir a palavra inteira, seu cursor está sendo usado.
diw
Para excluir a palavra inteira, seu cursor está ativado e para colocá-lo no modo de inserção.
ciw
Se você não deseja excluir a palavra inteira, exclua de onde está.
dw/cw
fonte
Como existem muitas maneiras de excluir uma palavra, vamos ilustrá-las.
Supondo que você edite:
e invoque um comando enquanto o cursor estiver no 'a' na 'barra':
fonte
Infelizmente, o modo de inserção não possui esse comando. No VIM, para excluir a palavra inteira sob o cursor, você pode digitar
viwd
no modo NORMAL. Que significa " V isual-bloco I nner W ord D elete". Use uma letra maiúsculaW
para incluir pontuação.fonte
A resposta aceita falha ao tentar repetir a exclusão de palavras, tente esta solução:
Ele mapeia o CTRL-BackSpace, também trabalhando no modo normal.
fonte
Para excluir uma certa quantidade de caracteres antes do cursor, você pode usar X. Para excluir um certo número de palavras após o cursor, você pode usar dw (várias palavras podem ser excluídas usando 3dw por 3 palavras, por exemplo). Para excluir ao redor do cursor em geral, você pode usar daw.
fonte
No antigo vi,
b
move o cursor para o início da palavra antes do cursor,w
move o cursor para o início da palavra após o cursor,e
move o cursor no final da palavra após o cursor edw
exclui do cursor para o final da palavra.Se você digitar
wbdw
, excluirá a palavra ao redor do cursor, mesmo se o cursor estiver no início ou no final da palavra. Observe que os espaços em branco após uma palavra consideram parte da palavra a ser excluída.fonte
Não tenho muita certeza sobre o uso de "antes" e "depois", mas você já tentou
?
Edit: Eu acho que você está procurando algo para usar no modo de inserção. Estranhamente, não há nada para ser encontrado nos documentos, ctrl-w parece ser tudo o que existe.
fonte
Fiz dois mapeamentos para obter consistência no modo de inserção e fora do modo de inserção.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
fonte
Nesse caso, a solução proposta pelo OP (ou seja, usando
<c-w>
) pode ser combinada com a resposta aceita para fornecer:alternativamente (solução mais curta):
Entrada de amostra:
Resultado:
fonte