web-dev-qa-db-fra.com

Comment puis-je supprimer le dernier caractère de chaque ligne à l'aide de vim

J'ai un fichier:

12345a
123456b
1234567c
12345678d
123456789e

Comment puis-je supprimer le dernier caractère de chaque ligne.
Et le fichier sera

12345
123456
1234567
12345678
123456789
20
Larry Lu

Vous pouvez utiliser :%s/.\{1}$// pour supprimer 1 caractère à la fin de chaque ligne.

35
Jevl

:%normal $x

  • : vous met en mode ligne de commande
  • % est une plage représentant le fichier entier
  • normal dit que nous exécutons une commande en mode normal
  • $x supprime le dernier caractère de la ligne

Certaines se chevauchent avec d’autres réponses, mais pour moi celle-ci se lit le plus simplement.

13
tjstankus

Utilisez la commande :g:

:g/^/norm $x
  • ^ correspond à chaque ligne qui sera exploitée.
  • norm est un raccourci pour normal, précédant la commande normale que vous voulez exécuter.
  • $x se déplacer en fin de ligne et supprimer un caractère en mode normal
4
Wray Zheng

TLDR::%s/.$//

Pour plus d'explications et d'explications, lisez la suite.

  • :%s/.$//
    • supprime tout caractère à la fin de toutes les lignes (ou mieux: remplace tout caractère à la fin par rien)
    • s = substitute commande
    • . = n'importe quel caractère
    • si vous voulez supprimer . (pas n'importe quel caractère), utilisez \.$ au lieu de .$
  • :'<,'>s/.$//g
    • supprime tout caractère à la fin de toutes les lignes de la sélection en cours
    • '<,'> = sélection actuelle (vous obtenez ceci par SHIFT+V, puis en sélectionnant les lignes, puis :
  • :%s/;$//
    • supprime ; à la fin de toutes les lignes 
    • utile si vous copiez et collez le code d'une langue nécessitant ; vers une autre qui ne le fait pas
2
Moe Pad