Efface une ligne plus rapidement que [0] [d] [$]

18

Existe-t-il un moyen plus rapide d'effacer le texte sur une ligne que

  • appuyer 0pour sauter au début, puis
  • en appuyant sur d$pour supprimer jusqu'à la fin de la ligne?

Et si je voulais tout supprimer sauf l'indentation? Y-a-t-il un moyen de faire ça?

Robbie Wxyz
la source

Réponses:

34

Comme vous l'avez dit, il existe plusieurs façons, et vous pouvez également prendre en compte ce que sera votre prochaine action après avoir effacé ou supprimé la ligne actuelle.

  1. dd supprimera la ligne actuelle (pas claire)
  2. 0D effacera la ligne actuelle, y compris les espaces
  3. ^Deffacera la ligne actuelle sans les espaces ( ^dg_économise l'espace de fin)
  4. 0C effacera la ligne actuelle, y compris les espaces et vous mettra en mode insertion
  5. ^Ceffacera la ligne actuelle sans les espaces et vous mettra en mode insertion ( ^cg_économise l'espace de fin)

ccou Sfonctionnera comme 4. ou 5. si 'autoindent' est respectivement désactivé ou activé.

Utilisez donc tout ce qui convient à l'action en cours. Je crois que 0Dc'est le plus rapide pour effacer la ligne, mais vous pouvez le mapper à quelque chose si vous le souhaitez, pour le rendre encore plus rapide.

akshay
la source
7
@SuperScript Sest synonyme decc
FDinoff
1
Merci pour la bonne réponse, @akshay; TYLTK c'est fini avec les meilleurs: vi.stackexchange.com/…
Robbie Wxyz
9

Oui. S'il y a une chose que j'aime chez Vim, c'est que la réponse à "Puis-je faire ça?" est presque toujours un oui catégorique .

0D Passe au début, puis supprime jusqu'à la fin de la ligne.

^D (pas Ctrl + D) sautera au premier caractère non blanc, puis supprimera jusqu'à la fin.

(PS, je viens de comprendre cela et je voulais partager avec d'autres noobs. S'il vous plaît laissez-moi savoir s'il y a une meilleure façon.)

Robbie Wxyz
la source
6

Effacer la ligne avec un (décalé) clé: S.

Cela conserve également le retrait.

Vous passez en mode insertion à la première position après le retrait, ou au début de la ligne - juste ce dont vous avez besoin pour remplacer une ligne - donc le nom S- comme substitut.

:help S

["x]S   Delete [count] lines [into register x] and start
        insert.  Synonym for "cc" |linewise|.

["x]cc  Delete [count] lines [into register x] and start
        insert |linewise|.  If 'autoindent' is on, preserve
        the indent of the first line.
Volker Siegel
la source
Sest une excellente clé.
domi91c
3

Avec le plugin " vim-textobj-line " de Kana , vous pouvez utiliser des opérations sur la ligne en retrait avec il(par exemple dil), ou la ligne entière sans la nouvelle ligne, avec al(par exemple yal). L'avantage de cette approche est subtil: au lieu d'avoir à penser aux deux mouvements (début, fin) pour l'opération souhaitée, vous spécifiez directement l' objet texte : i n l ine, a l ine.

VanLaser
la source