Eu sei que provavelmente já examinei isso um milhão de vezes em todos os documentos VI que li, mas não consigo encontrar a exclusão do cursor para o comando final da linha.
Você tem um erro de digitação aqui - você diz "fim da linha" no título, mas "fim da palavra" na pergunta.
Cascabel
Respostas:
449
O comando dwexcluirá da posição atual do cursor até o início do próximo caractere de palavra. O comando d$(note que é um cifrão, não um 'S') será excluído da posição atual do cursor até o final da linha atual. Dé um sinônimo para d$.
Sim, eu sei dw, mas acho que assumi que haveria um comando "excluir o restante desta linha". Por exemplo, minha linha tem ip=|10.1.1.1como |local do cursor. Existe um comando que excluirá tudo 10.1.1.1?
Falmarri
3
@Falmarri - peço desculpas, devo ter entendido mal sua pergunta. Existe um comando para isso:d$
Tok
84
D (Shift + d) também é sinônimo de d $.
Neth
5
@ Andy, o trabalho é excluir do cursor até o final da linha. Se você considera que excluir mais do que isso é "fazer o trabalho", você também pode usar :!rm -f %e depois :q!. Isso exclui o arquivo inteiro.
Curinga
2
@Amir Basta usar d^('d' + sinal de intercalação) ... basicamente d + qualquer caractere que normalmente moveria o cursor, mas acho que estou aprendendo o Vim, para que eu possa estar errado nisso.
Jaked
41
Como já mencionado: você pode usar d$ou D( shift- d) para excluir da posição do cursor até o final da linha.
O que eu normalmente acho mais útil é c$ou C( shift- c) porque ele será excluído da posição do cursor até o final da linha e o colocará no modo [INSERIR].
LEGAIS!!! Isso é muito melhor do que Dpara a maioria das pessoas, na minha opinião, uma vez que não leva você de volta a um espaço no final da linha.
Elias Lynn
Por que essa resposta está escondida aqui em baixo? Essa é a funcionalidade que eu estava realmente procurando quando cheguei aqui.
M_M
@ElijahLynn não deve ser um problema de qualquer maneira. O Vim tem duas maneiras principais de entrar no modo de inserção ique é inserido antes do cursor e aque é inserido depois do cursor. Se o cursor estiver no final da linha e você deseja inserir no final da linha, você pode apenas usá-lo a.
Lie Ryan
1
O objetivo é fazer isso em uma operação, não em duas. Teclas extras = fricção extra.
Elijah Lynn
36
Uma das coisas boas sobre o vi é sua estrutura de comando lógica. dseguido por um comando de movimento d eletes para o alvo do que o movimento. $move para o final da linha (mnemônico: como nos regexps). Assim, d$elimina até o fim da linha. Da mesma forma, ese move para o e nd da palavra atual, e wmove-se para o início da próxima w ord; por isso deexclui o final da palavra atual, e dwalém disso elimina o seguinte espaço em branco.
@gioele eu uso <kbd>para chaves reais, não para seqüências de comando. Por exemplo <kbd>Ctrl</kbd>+<kbd>C</kbd>, mas d$.
Gilles
@Gilles Você está certo. Eu apenas tentei d ^ e ele excluiu da posição do cursor para a linha começar.
ka3ak
Eu sempre usei (d) elete (a) (w) ord para excluir palavras :) #
22616 Michalik
20
Você provavelmente deseja usar D. Mova o cursor para o primeiro caractere que deseja excluir e pressione Shift-D. Tudo se foi. Na verdade, ele está no buffer de corte padrão, para que você possa colar P ou P de volta.
Uso Dp (excluir para o final da linha e colocá-lo de volta), passar para o final de outra linha e, em seguida, p novamente para colar o mesmo texto no final dessa outra linha. Faz maravilhas em arquivos de configuração, onde você precisa colocar um URL complicado em dois ou mais lugares.
Provavelmente é um Vim mínimo que ele usa de qualquer maneira.
Polem3
0
Eu acho que um atalho do modo de inserção pode ser útil.
No modo de inserção, talvez seja melhor começar a mudar até o final da linha (coloque isso no seu ~/.vimrc):
inoremap <C-l> <C-o>C
Então você tem, como já foi dito, Dno modo normal e Ctrl+ lno modo de inserção. Como você pode ver, você também tem Cque começar a mudar até o final da linha.
<C-o> ......... insert normal keystroke in insert mode
Eu escolhi Ctrl- lporque lestá sob seus dedos. O Ctrl- kjá é usado para inserir dígitos.
Eu tenho procurado por :h i_Ctrlalgumas combinações de teclas gratuitas, e esse é realmente o maior problema quando se trata de criar novos atalhos para executar ações no vim.
Para excluir um intervalo de linhas após a posição do cursor, ele 3Dserá excluído do cursor até o final da linha, bem como as próximas duas linhas completamente (ou seja, exclui 3 linhas após a posição do cursor).
por exemplo, para o texto a seguir (cursor representado como |),
Respostas:
O comando dwexcluirá da posição atual do cursor até o início do próximo caractere de palavra. O comando d$(note que é um cifrão, não um 'S') será excluído da posição atual do cursor até o final da linha atual. Dé um sinônimo para d$.
fonte
dw
, mas acho que assumi que haveria um comando "excluir o restante desta linha". Por exemplo, minha linha temip=|10.1.1.1
como|
local do cursor. Existe um comando que excluirá tudo10.1.1.1
?d$
:!rm -f %
e depois:q!
. Isso exclui o arquivo inteiro.d^
('d' + sinal de intercalação) ... basicamente d + qualquer caractere que normalmente moveria o cursor, mas acho que estou aprendendo o Vim, para que eu possa estar errado nisso.Como já mencionado: você pode usar
d$
ouD
( shift- d) para excluir da posição do cursor até o final da linha.O que eu normalmente acho mais útil é
c$
ouC
( shift- c) porque ele será excluído da posição do cursor até o final da linha e o colocará no modo [INSERIR].fonte
D
para a maioria das pessoas, na minha opinião, uma vez que não leva você de volta a um espaço no final da linha.i
que é inserido antes do cursor ea
que é inserido depois do cursor. Se o cursor estiver no final da linha e você deseja inserir no final da linha, você pode apenas usá-loa
.Uma das coisas boas sobre o vi é sua estrutura de comando lógica.
d
seguido por um comando de movimento d eletes para o alvo do que o movimento.$
move para o final da linha (mnemônico: como nos regexps). Assim,d$
elimina até o fim da linha. Da mesma forma,e
se move para o e nd da palavra atual, ew
move-se para o início da próxima w ord; por issode
exclui o final da palavra atual, edw
além disso elimina o seguinte espaço em branco.fonte
<kbd>
para chaves reais, não para seqüências de comando. Por exemplo<kbd>Ctrl</kbd>+<kbd>C</kbd>
, masd$
.Você provavelmente deseja usar D. Mova o cursor para o primeiro caractere que deseja excluir e pressione Shift-D. Tudo se foi. Na verdade, ele está no buffer de corte padrão, para que você possa colar P ou P de volta.
Uso Dp (excluir para o final da linha e colocá-lo de volta), passar para o final de outra linha e, em seguida, p novamente para colar o mesmo texto no final dessa outra linha. Faz maravilhas em arquivos de configuração, onde você precisa colocar um URL complicado em dois ou mais lugares.
fonte
Eu acho que um atalho do modo de inserção pode ser útil.
No modo de inserção, talvez seja melhor começar a mudar até o final da linha (coloque isso no seu
~/.vimrc
):Então você tem, como já foi dito, Dno modo normal e Ctrl+ lno modo de inserção. Como você pode ver, você também tem Cque começar a mudar até o final da linha.
Eu escolhi Ctrl- lporque
l
está sob seus dedos. O Ctrl- kjá é usado para inserir dígitos.Eu tenho procurado por
:h i_Ctrl
algumas combinações de teclas gratuitas, e esse é realmente o maior problema quando se trata de criar novos atalhos para executar ações no vim.fonte
Para excluir um intervalo de linhas após a posição do cursor, ele 3Dserá excluído do cursor até o final da linha, bem como as próximas duas linhas completamente (ou seja, exclui 3 linhas após a posição do cursor).
por exemplo, para o texto a seguir (cursor representado como
|
),O uso do comando 3Dproduzirá:
fonte