VIM: comment aller à la ligne exacte sur Ubuntu


87

J'utilise visur Ubuntu 12.10. Certains fichiers sont assez longs, donc lorsque je veux aller au milieu du fichier, je dois faire défiler la page vers le bas ou faire défiler vers le bas.

Existe-t-il un raccourci VIM pour accéder à un numéro de ligne exact?


Experts @vim. Est-ce vraiment spécifique à Ubuntu- / bash- / Linux (selon les balises OP)? Je n'utilise pas beaucoup vim, mais pour mes utilisations, je n'ai pas remarqué la moindre différence entre Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov

Réponses:


143
:150

vous amènera à la ligne 150 en vi

:1500

vous amènera à la ligne 1500 en vi

Selon les commentaires, vous voudrez peut-être essayer

150G

pour arriver à la ligne 150. qui est moins de touches alors :150Enter si vous n'êtes pas sûr de la ligne sur laquelle vous vous trouvez, essayez

 :set nu!

remarquez le:

si vous voulez toujours voir la ligne, pensez à modifier votre profil vim. Le plus souvent

vi ~/.vimrc

et ajouter

:set nu! 

et écrire et quitter

:wq
#or you could use :x

cela peut être fait en dehors de vi. Par exemple, si je veux supprimer la ligne 5000 dans un fichier texte, je pourrais utiliser un langage de script. Par exemple, en utilisant sed, ce serait le suivant

sed -i '5000d;' inputFile.txt

pour supprimer les lignes 10 à 20, ce serait

sed -i '10,20d;' inputFile.txt

notez que -i éditera le fichier en place. Sans le -i, il passera à stdout. Essayez-le. vous pouvez rediriger stdout vers un fichier

sed '5001,$d;' inputFile.txt >> appenedFile.txt

cela pourrait avoir beaucoup de choses ici pour vous. cela supprime la ligne 5001 à $. Avec $ étant la fin du fichier. >> s'ajoutera à un fichier. où as> crée un nouveau fichier.

si vous êtes curieux de savoir combien de lignes il y a dans un fichier, vous voudrez peut-être taper wc -l inputFile.txt

une partie de cela peut sembler terriblement insignifiante, mais si vous essayez d'éditer un fichier de 50 000 lignes, cela peut prendre une petite minute pour ouvrir et parcourir. où si vous savez que vous voulez simplement supprimer la dernière ligne, vous pouvez utiliser sed et le faire en une fraction du temps.

sed peut également rechercher et remplacer à l'intérieur d'un fichier. Mais peut-être que awk, perl ou python pourrait également être une solution viable.

mais dans l'ensemble, vous voudrez peut-être trouver un bon tutoriel sur vi. des milliers existent. Je consulterais google. Peut-être trouvez-vous un tricheur VIM.


Pas de problème, j'ai un peu développé ma réponse. Bonne chance
match du

2
aussi, dans vim, vous pouvez taper: n50% et aller au milieu du fichier.
Eric Fortis

1
En mode normal, 150Gfait la même chose que :150. Ce n'est pas plus rapide mais peut être plus facile à retenir.
romainl

@romainl 150gg fait de même. Les deux sont en effet plus rapides que: 150 <cr>
Randy Morris

@Randy Morris - Oui, c'est plus rapide, j'ai oublié de prendre <CR>en compte.
romainl

14

Autres astuces Vim: en mode commande

  • H va en haut de l'écran
  • M va au milieu de l'écran
  • L va au bas de l'écran
  • gg va à la première ligne
  • G va à la dernière ligne


6

Depuis un terminal ouvert, dans un shell bash, éditez simplement votre fichier en exécutant:

$ vi +N yourfile

Nest le numéro de ligne.

Pour la visualisation ( moreou less;):

$ less +N yourfile
$ more +N yourfile

La commande sign +mean à exécuter au démarrage . Donc, si la commande n'est qu'un nombre, alors vi, lesset more, sautera à ceci comme numéro de ligne .

Mais vous pouvez également utiliser /regexpour rechercher la première occurrence d'une chaîne ou d'une expression régulière spécifique:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...

3

Un autre conseil: puisque vous êtes nouveau sur vim, courir vimtutorpeut être très utile.


6
Cela ne devrait-il pas être simplement un commentaire car il ne répond pas à la question spécifique?
Brian Rasmussen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.