Uma operação bastante comum para mim no vim, já que sou obsessivo-compulsivo e gosto de manter meus arquivos livres de espaço em branco, é excluir o conteúdo de uma linha inteira, mas não a linha em si (ou seja, não a quebra de linha).
Existe uma maneira integrada do vim de fazer isso? Talvez uma d<movement command>
operação?
Até agora, o melhor que tenho é (na linha em questão) 0d$. Existe uma maneira mais rápida?
key-bindings
cursor-movement
Andrew Ferrier
fonte
fonte
:%s/\s*$//
Respostas:
Você pode usar
0D
isso para ir para o primeiro caractere da linha e excluir até o final da linha. Observe que você pode usá-^D
lo se desejar deixar em branco qualquer espaço em branco anterior. Além disso, essas operações não podem ser repetidas usando.
. Se você deseja uma operação que pode ser repetida com o.
comando, consulte a resposta de David Lord.Tópicos de ajuda:
:help 0
:help D
:help ^
fonte
.
comando Por esse motivo, achocc<Esc>
ouS<Esc>
é mais atraente se você se importa em repetir..
..
. Eles funcionam como se essas teclas tivessem sido inseridas interativamente, para que comandos individuais fossem tratados separadamente. O uso.
repetirá apenas o último comando da macro.@{reg}
, você poderá repeti-la.
posteriormente.D
. Após uma0D
operação, o cursor será deixado na coluna 0. Se o cursor já estiver no início da linha (depois de você passar para outra), parecerá que a macro foi repetida corretamente. Tente mover o cursor para frente na linha e digitar.
- você verá que ele se repete apenasD
.cc <Esc>
fará o que você pede, mas é mais pressionamento de tecla do que0D
. Se você quiser colocar algo nessa linha depois,cc
talvez seja melhor.fonte
.
comando. Por outro lado,0D
(como sugerido na resposta escolhida), há duas ações: o0
movimento e oD
comando.0D
para mim desde que eu tenhajk
mapeado para<Esc>
no meu vimrc, então minhas mãos não teria sequer a deixar a linha de casa.S
está documentada como "sinônimo paracc
"S
e entãoCtrl+C
ouEsc
parece realizar exatamente a mesma função.Pode então ser repetido com
.
, pois constitui uma única ação.fonte
0D
é provavelmente o que você quer. Ele será excluído do cursor até o final da linha, deixando a linha (e quaisquer caracteres antes do cursor) no lugar.fonte
0D
excluirá a partir do início da linha , não a partir da posição do cursorEu normalmente uso
ddO
.dd
para excluir a linha atual eO
(que é o maiúsculo) para adicionar uma nova linha.Isso também são três pressionamentos de tecla, mas
dd
conta apenas como 1 ano e meio, e achoO
mais fácil digitar do que$
.É diferente da
0D
solução, pois faz a auto-indentação, por exemplo, com este código (onde!···
está uma guia e █ o cursor:0D
vai deixar você com:E
ddO
vai deixar você com:E se você pressionar
<Esc>
imediatamente após isso, o Vim deverá remover a indentação automática, para que você tenha o mesmo que com0D
.Não existe uma maneira 'correta', isso dependerá exatamente do que você deseja fazer. Eu prefiro
ddO
porque é mais flexível e porque está "nos meus dedos" :-)fonte
^D
deixará o espaço em branco sozinho.O
deixa no modo de inserção, isso é equivalente acc
, exceto sem recuo automático .... a menos que sua linha já tenha sido recuada automaticamente.E para salvar aquele toque de tecla precioso que você pode usar,
0C
ele excluirá todos os caracteres da linha atual e o colocará no modo de inserção.fonte