web-dev-qa-db-fra.com

Comment puis-je modifier plusieurs fichiers dans VIM?

Je sais que je peux ouvrir plusieurs fichiers avec vim en faisant quelque chose comme vim 2011-12*.log, mais comment basculer entre les fichiers et fermer les fichiers un par un? De plus, comment savoir le nom de fichier du fichier actuel que je modifie?

178
cwd

Tout d'abord, dans vim, vous pouvez entrer : (deux points), puis aidez help, ala :help pour une liste de rubriques d'auto-assistance, y compris un court didacticiel. Dans la liste des sujets, déplacez votre curseur sur le sujet qui vous intéresse, puis appuyez sur ctrl] et ce sujet sera ouvert.

Un bon endroit pour commencer serait le sujet

|usr_07.txt|  Editing more than one file

Ok, passons à votre réponse.

Après avoir démarré vim avec une liste de fichiers, vous pouvez passer au fichier suivant en entrant :next ou :n pour faire court. :wnext est l'abréviation d'écrire les modifications actuelles, puis de passer au fichier suivant.

Il y a aussi un analogue :previous, :wprevious et :Next. (Notez que :p est un raccourci pour :print. Le raccourci pour :previous est :prev ou :N.)

Pour voir où vous vous trouvez dans la liste des fichiers, entrez :args et le fichier en cours de modification apparaîtra dans [] (supports).

Exemple:

vim foo.txt bar.txt
:args

résultat:

[foo.txt] bar.txt
187
bsd

vous pouvez ouvrir un autre fichier pendant que vim est ouvert avec :tabe filename et pour passer à l'autre fichier que vous tapez :tabn ou :tabp pour le suivant et le précédent en conséquence.

Les raccourcis clavier gT et gt peuvent également être utilisés pour changer d'onglet lorsque vous n'êtes pas en mode édition (c'est-à-dire pas en mode insertion, remplacement, etc.). Sur certains systèmes Ctrl+Alt+Page Up et Ctrl+Alt+Page Down autorise également le changement de tabulation, mais cela ne fonctionne pas toujours (par exemple, il ne fonctionnera pas dans le terminal OS X "prêt à l'emploi").

Et vous pouvez voir le nom du fichier en haut de l'application vim.

61
Hanan N.

Commandes pour basculer entre les tampons:

:bf            # Go to first file.
:bl            # Go to last file
:bn            # Go to next file.
:bp            # Go to previous file.
:bw            # Close file.

:help buffer pour plus d'informations

Pour connaître le nom de fichier, utilisez Ctrl+G, :file ou :f

42
Birei

Outre les réponses données, une autre option consiste à diviser la fenêtre avec:

:sp
:vsp

:vsp est pour la division verticale. Utilisez ensuite Ctrl+W <ARROW_KEYS> pour se déplacer dans les volets.

30
Not Now
:n -> Move to next file
:N -> Move to previous file
15
diham

J'ai posé une question similaire au superutilisateur,

"Comment copier et coller entre différentes fenêtres bash et fichiers ouverts avec VI?"

La réponse à ma question était que vous ne pouvez pas, mais vous pouvez ouvrir deux fichiers dans une fenêtre bash en utilisant la commande :split De VIM:

  1. Ouvrez un fichier avec $ vim file1, Ouvrez un deuxième fichier dans VIM en utilisant la commande :split file2.
  2. Ou utilisez $ vim -o file1 file2 De bash.
  3. Basculer entre les fichiers - basculer le fichier actif - dans VIM avec ctrl-wctrl-w.
  4. Un exemple d'opération est alors copier (ou copier) dans le fichier1 yy, changer (3), puis coller (ou mettre) p contenu dans le fichier 2.
  5. Tout le reste est normal lorsque l'une ou l'autre fenêtre est active, donc :q Se ferme et :q! Force à se fermer.

Mon bash est en noir et blanc, donc le nom de fichier de chaque écran est stylisé comme une ligne inversée "sélectionnée" avec le nom de fichier qui y est cité.

Woot!

13
xtian
argadd a/b c/d e/f

argadd ... ajoutera tous les fichiers aux arguments, ainsi qu'à :ls/:buffers et vous permet de les modifier.


Voir :h arglsit & :h argedit & :h argsd


En outre, vous ne pouvez effectuer certaines actions que sur des arguments avec :argdo ..., et vous pouvez recommencer avec vos arguments en faisant :argsd*.

6
Dylan

Je trouve que la méthode la plus pratique pour modifier plusieurs fichiers consiste à utiliser des onglets. Vous pouvez ouvrir plusieurs fichiers dans des onglets séparés via la ligne de commande comme ceci:

vim -p file1.txt file2.txt

Ou si vous avez déjà ouvert vim, vous pouvez ouvrir un nouveau fichier dans un nouvel onglet comme ceci:

:tabe file2.txt

Une fois les onglets ouverts, utilisez gt pour afficher l'onglet suivant et gT pour afficher l'onglet précédent.

Vous pouvez également accéder au premier onglet avec 1gt, le deuxième onglet avec 2gt, etc.

Vous pouvez fermer les onglets à l'aide de :tabc

Enfin, vous pouvez déplacer l'onglet actuel vers nème emplacement avec :ntabmn est un nombre supérieur ou égal à 0.

6
Cory Klein

Il existe de nombreuses façons de le faire. La première, peut-être la moins pratique, consiste à appeler vim avec les fichiers que vous souhaitez modifier - créez:

vim first_file second_file ...

Il appelle les deux fichiers dans deux tampons. Pour passer d'un fichier à un autre, veuillez utiliser :n et :N. Pour répertorier les fichiers que vous modifiez, :args fera l'affaire. :help buffer vous aidera davantage à ce sujet.


Ceci devrait répondre à votre question. Mais voici plus d'informations:

Il existe un moyen de modifier vos fichiers de manière plus pratique en fractionnant l'écran de votre console à l'aide de vim. Pour ce faire, ouvrez deux cadres avec :split (:sp) ou :vsplit (:vs) lors de l'utilisation de vim. Naviguez ensuite dans ces cadres en utilisant la combinaison Ctrl + W > Ctrl + W. Vous pouvez aussi utiliser Ctrl + W + la flèche ou la clé (HJK ou L) correspondant à la trame suivante. Lorsque cela est fait, modifiez le fichier souhaité avec :e file_name. :help opening-window vous aidera davantage à ce sujet.

Maintenant, si vous souhaitez voir les différences entre les fichiers, utilisez le -d argument ou appelez le programme vimdiff (c'est la même chose) avec les fichiers correspondants. :help diff vous aidera davantage à ce sujet.

vim -d first_file second_file ...

Veuillez me faire savoir si vous avez un problème.

1
aleroy

J'aime utiliser des fenêtres divisées - horizontales et verticales - pour éditer plusieurs fichiers.

J'utilise tmux pour gérer ces fenêtres plus facilement

https://tmux.github.io/ "Qu'est-ce qu'un multiplexeur de terminaux? Il vous permet de basculer facilement entre plusieurs programmes dans un même terminal, de les détacher (ils continuent de fonctionner en arrière-plan) et de les rattacher à un autre terminal. Et faites-en beaucoup plus. Consultez le manuel. "

Exemple: regarder des fichiers ou exécuter des tests à droite, éditer des fichiers de test et source à gauche: enter image description here

1
Michael Durrant

:e #(filename) pour basculer entre deux fichiers ouverts

:p pour le fichier précédent

:n pour le fichier suivant

0
bala selvam