Muitas vezes no vim eu gostaria de excluir uma linha completamente, então eu uso o dd. No entanto, preciso colar essa linha em outra posição dentro de uma linha, mas isso insere uma nova linha antes de colar, portanto, dificultando a obtenção do resultado desejado. Por exemplo,
while( pasteInHere )
{
cin >> n; // Delete this line completely with dd
}
quando faço isso com o código acima, recebo:
while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}
o que está muito longe do resultado que eu quero ... como posso suprimir esse comportamento da nova linha ou usar outro método que o faça com muita eficiência? Eu não acho que d $ seja bom porque eu não só tenho que ir para o início da linha, mas se eu quiser excluir a linha vazia também, preciso excluí-la em outro registro, sinto que deve haver uma maneira mais fácil! Obrigado.
cut-copy-paste
ano
fonte
fonte
0D
excluir linha, exceto quebra de linha. E dogJ
que juntar linhas. Agora você pode colocar o texto sem linha de interrupção e sem linha vazia.Respostas:
Você pode ir a qualquer lugar na linha acima da linha que deseja excluir e pressionar
JD
e colarp
no ponto desejado.J
une as duas linhas e o move no início do texto que você deseja excluir. Isso exclui um caractere de nova linha e o recuo da linha que você deseja mover.D
exclui da posição atual do cursor até o final da linha, mas preserva o caractere de nova linha.Dica: você pode usar
:pu
se você excluiuD
ou puxou comy$
e deseja colar com uma nova linha.fonte
Não é realmente mais simples, mas é um pouco mais eficiente, e você também pode criar mapas no modo normal para as duas sequências:
fonte
Você pode conseguir algo que funciona muito bem com um
imap
. Adicione o seguinte ao seuvimrc
:Isso criará um mapeamento para CTRL-acolar o último texto excluído (com
dd
ou similar). Se preferir, é claro que você pode usar uma chave diferente para o mapeamento.Referências:
fonte
Isso também me parece um pouco, nunca pensei em otimizá-lo antes, mas esse mapeamento funciona:
dil
é "de exclusão na linha", semelhante adiw
,di"
, etc.fonte
Colar sem nova linha
Coloque isso no seu arquivo .vimrc:
Exemplo:
Agora você pode digitar
gp
para inserir#D51B3F
depoiscolor:
enquanto meu cursor estiver no:
modo Normal.Arrancar sem nova linha
Use a resposta de flukus:
como acrônimo de excluir linha interna . Isso também se livra do recuo principal.
fonte
Você pode selecionar o texto que deseja copiar pressionando
v
e depois colocá-lo no buffer pressionandoy
e colá-lo em qualquer lugarp
. Não insere nenhuma nova linha.fonte