web-dev-qa-db-fra.com

VIM: comment aller à la ligne exacte sur Ubuntu

J'utilise vi sur Ubuntu 12.10. Certains fichiers sont assez longs, donc lorsque je veux aller au milieu du fichier, je dois faire une 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?

77
kevin
:150

vous amènera à la ligne 150 en vi

:1500

vous amènera à la ligne 1500 en vi

Selon les commentaires que vous voudrez peut-être essayer

15G

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

 :set nu!

remarquez:

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

supprimer les lignes 10 à 20, il serait

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

notez que -i modifiera le fichier en place. Sans le -i, cela deviendra 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 à $. $ Étant la fin du fichier. >> s'ajoutera à un fichier. où as> crée un nouveau fichier.

si vous êtes curieux du nombre de lignes dans un fichier, vous pouvez taper wc -l inputFile.txt

certaines de ces informations peuvent sembler extrêmement triviales, mais si vous essayez de modifier un fichier de 50 000 lignes, l'ouverture et le déplacement peuvent prendre vi une minute. 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. Vous trouverez peut-être un VIM Cheatsheat.

132
matchew

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
13
glenn jackman

prenez quelques minutes et commencez à lire ce document. Il vous récompense à long terme pour l'efficacité de l'édition, en particulier du fichier de configuration.

7
Jasonw

À partir d'un terminal ouvert, dans un shell bash, modifiez simplement votre fichier en exécutant:

$ vi +N yourfile

N est le numéro de ligne.

Pour visualiser (more ou less;):

$ less +N yourfile
$ more +N yourfile

Le signe + signifie commande à exécuter au démarrage. Donc, si commande n'est qu'un nombre, alors vi, less et more, y sautera comme numéro de ligne =.

Mais vous pouvez également utiliser /regex pour trouver la première occurrence d'une chaîne ou d'une expression rationnelle spécifique:

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

Un autre conseil: puisque vous êtes nouveau sur vim, exécuter vimtutor peut être très utile.

3
rvs