Comment puis-je ajouter des numéros de ligne à une plage de lignes dans vim? Pas comme dans ":set nu" - c'est simplement l'affichage des numéros, mais ne pas ajouter dans le fichier.
Réponses
Trop de publicités?Avec
:%s/^/\=line('.')/
EDIT: pour résumer les commentaires.
Cette commande peut être modifié autant que vous le souhaitez.
Disons que vous voulez pour ajouter les numéros en face de lignes à partir d'une sélection visuelle (V
+ déplacement), et vous voulez que la numérotation commencer à 42.
:'<,'>s/^/\=(line('.')-line("'<")+42)/
Si vous souhaitez ajouter une chaîne de caractères entre le numéro et le texte de la ligne, juste concaténer (avec .
dans VimL) pour le nombre d'expression:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
De toute façon, si vous voulez plus d'informations, il suffit d'ouvrir vim aider: :h :s
et de suivre les liens (|subreplace-special|
, ..., |submatch()|
)
cat -n
ajoute des numéros de ligne à son entrée. Vous pouvez transférer le fichier en cours d' cat -n
et remplacer le tampon courant avec ce qu'il imprime sur la sortie standard stdout. Heureusement ce alambiqué solution est de moins de 10 caractères dans vim:
:%!cat -n
Ou, si vous voulez juste une sous-sélection, sélectionner visuellement la zone, et tapez ceci:
:!cat -n
Qui va automatiquement mettre la sélection visuelle des marqueurs et ressemblera à ceci après que vous avez tapé à la machine:
:'<,'>!cat -n
Afin d'effacer les numéros de ligne, je recommande l'utilisation d' control-v
, ce qui vous permettra de sélectionner visuellement un rectangle, vous pouvez alors supprimer ce rectangle avec x
.
Avec un environnement de type Unix, vous pouvez utiliser le chat ou awk pour générer un numéro de ligne facilement, parce que vim dispose d'une interface conviviale avec shell, donc tout le travail dans vim ainsi comme il le fait dans un shell.
De Vim Tip28:
:%!cat -n
ou
:%!awk '{print NR,$0}'
Mais, si vous utilisez vim en mode MS-DOS, windows 9x, win 2000, de perte de ces outils. voici un moyen très simple pour l'archivage de ce que par vim:
fu! LineIt()
exe ":s/^/".line(".")."/"
endf
Ou, une séquence composée avec l'alphabet est aussi facile que ci-dessus:
exe "s/^/".nr2char(line("."))."/"
Vous pouvez également utiliser un subst:
:g/^/exe ":s/^/".line(".")."^I/"
Vous pouvez aussi vous ne voulez imprimer les lignes sans les ajouter à la file:
"Parfois, il pourrait être utile, en particulier de modifier les gros fichiers source pour imprimer les numéros de ligne sur le papier.
Pour ce faire, vous pouvez utiliser l'option:set printoptions=number:y
d'activer et d':set printoptions=number:n
pour désactiver cette fonction.
Si le numéro de ligne doit être imprimé toujours, la place la ligne,set printoptions=number:y
dans lavimrc
."
Tout d'abord, vous pouvez supprimer les numéros de ligne si vous avez besoin de:
:%s/^[0-9]*//
Ensuite, vous pouvez ajouter des numéros de ligne. NR
renvoie le numéro de ligne en cours, en commençant à un, de sorte que vous pouvez faire un peu de maths sur elle pour obtenir la numérotation que vous souhaitez. La commande suivante vous donne quatre chiffres pour les numéros de ligne:
:%!awk '{print 1000+NR*10,$0}'