Comment puis-je éditer plusieurs fichiers dans VIM?

169

Je sais que je peux ouvrir plusieurs fichiers vimen faisant quelque chose comme cela vim 2011-12*.log, mais comment puis-je changer de fichier et fermer les fichiers un à un? Aussi, comment puis-je connaître le nom du fichier actuel que je suis en train de modifier?

cwd
la source
Connexe: gvim -p limite des onglets ouverts?
Grzegorz Wierzowiecki

Réponses:

172

Tout d’abord, dans vim, vous pouvez entrer :(deux points), puis help help, ala :helppour obtenir une liste de sujets d’auto-assistance, y compris un court tutoriel. 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, pour ta réponse.

Après avoir démarré vim avec une liste de fichiers, vous pouvez passer au fichier suivant en entrant :nextou :nen abrégé. :wnextest l'abréviation d'écrire les modifications actuelles, puis de passer au fichier suivant.

Il y a aussi un analogue :previous, :wpreviouset :Next. (Notez que :pc'est un raccourci pour :print. Le raccourci pour :previousest :prevou :N.)

Pour voir où vous en êtes dans la liste des fichiers, entrez :argset le fichier en cours de modification apparaît []entre crochets.

Exemple:

vim foo.txt bar.txt
:args

résultat:

[foo.txt] bar.txt
bsd
la source
25
: wn est la forme abrégée de: wnext.
Kowh
Vous pouvez aussi faire: rew pour revenir au premier fichier. : e # permute entre 2 fichiers. : n! passe au fichier suivant sans écrire. Regardez aussi: set autowrite.
Sasquiha
4
En ce qui concerne plusieurs tampons / fenêtres / onglets, reportez-vous également à StackOverflow - Comment travailler efficacement avec plusieurs fichiers dans Vim? et Utiliser les onglets de Vim comme les tampons .
mmoya
1
J'ai trouvé le chapitre 22 "Trouver le fichier à modifier" très utile également. L'explorateur de répertoires est ensuite utilisé pour modifier les fichiers souhaités.
Harry Moreno
: wn un génial.
Rammayur
54

vous pouvez ouvrir un autre fichier lorsque vim est ouvert avec :tabe filenameet pour passer en conséquence à l'autre fichier que vous tapez :tabnou :tabppour next et previous.

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 Upet Ctrl+ Alt+ Page Downautorisent également la commutation par tabulation, mais cela ne fonctionne pas toujours (par exemple, cela 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.

Hanan N.
la source
16
Cette. Également ouvrir les fichiers dans les onglets avec:vim -p file1 file2
Pas maintenant
ÉTONNER! Je n'avais jamais vu cela auparavant, malgré l'utilisation de vim depuis des années. Cela change tout .
me_and
Notez que les onglets ne sont pas conçus pour fonctionner avec plusieurs fichiers. Ils sont conçus pour fonctionner avec plusieurs mises en page . Voir l' article .
patryk.beza
5
Aside: si vous êtes déjà dans vim et que vous souhaitez ajouter un autre fichier, vous pouvez utiliser: :argadd filenameet ensuite :next. De même, vous pouvez utiliser :argdel filenamepour supprimer l'un des fichiers en cours d'édition.
Luv2code
36

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 trouver plus d'informations

Pour connaître le nom du fichier, utilisez Ctrl+ G, :fileou:f

Birei
la source
1
:bwfermer le fichier haha. N'oubliez pas de lire l'aide pour savoir :bwoù il est indiqué de ne l'utiliser que si vous savez ce que vous faites. Ce n'est pas bien grave, mais à moins que vous ne vouliez effacer toutes les marques et informations sur le fichier, il serait préférable de l'utiliser :bdou de :qressembler à une personne normale
Dylan
1
Plus d'infos sur :bwsi vous êtes curieux: vi.stackexchange.com/questions/2212/…
wisbucky
26

Une autre option en dehors des réponses fournies est de scinder la fenêtre avec:

:sp
:vsp

:vspest pour la division verticale. Puis utilisez Ctrl+W <ARROW_KEYS>pour vous déplacer dans les volets.

Pas maintenant
la source
4
Vous pouvez utiliser à la :vsplace de:vsp
Khaja Minhajuddin le
2
Ou même juste Ctrl+W, vpour la division verticale et Ctrl+W, spour la division horizontale.
Ruslan
1
J'utilise depuis CTRL+Wdes années et récemment, je fais beaucoup de montage de VIs à l'intérieur de pages Web. À chaque fois, je tape la commande sans même y penser et… whammmm… l'onglet du navigateur est VENU! Je continue à oublier. J'ai vraiment besoin d'apprendre un nouveau raccourci.
Jeach
13
:n -> Move to next file
:N -> Move to previous file
diham
la source
10

J'ai posé une question similaire au superutilisateur,

"Comment copier et coller entre différentes fenêtres bash et les 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 :splitcommande de VIM :

  1. Ouvrez un fichier avec $ vim file1, ouvrez un deuxième fichier dans VIM à l'aide de la :split file2commande.
  2. Ou, utilisez $ vim -o file1 file2de bash.
  3. Basculer entre les fichiers - Basculer fichier actif - dans VIM avec ctrl- w ctrl- w.
  4. Un exemple d’opération est alors copier (ou tirer) dans fichier1 yy, switch (3), puis coller (ou mettre) le pcontenu dans fichier2.
  5. Tout le reste est normal quand l'une des fenêtres est active, donc :qquitte et :q!force quitte.

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

Woot!

xtian
la source
6

Je trouve que la méthode la plus pratique pour éditer plusieurs fichiers est d'utiliser des onglets. Vous pouvez ouvrir plusieurs fichiers dans des onglets séparés via la ligne de commande, comme suit:

vim -p file1.txt file2.txt

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

:tabe file2.txt

Une fois les onglets ouverts, utilisez gtpour afficher l'onglet suivant et gTpour afficher l'onglet précédent.

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

Vous pouvez fermer les onglets en utilisant :tabc

Enfin , vous pouvez déplacer l'onglet en cours à l' ne position avec :ntabmnest un nombre supérieur ou égal à 0.

Cory Klein
la source
6
argadd a/b c/d e/f

argadd ...ajoutera tous les fichiers aux arguments, et également à :ls/ :bufferset vous permettra de les éditer.


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


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

Dylan
la source
0

Il y a beaucoup de façons de le faire. Le premier, peut-être le moins pratique, consiste à appeler vimavec 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 :net :N. Pour lister les fichiers que vous éditez, :argsfera le travail. :help buffervous aidera plus à ce sujet.


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

Il existe un moyen plus facile d’éditer vos fichiers en divisant l’écran de votre console avec vim . Pour ce faire, ouvrez deux cadres avec :split( :sp) ou :vsplit( :vs) tout en utilisant vim . Puis naviguez dans ces cadres en utilisant la combinaison Ctrl+ W> Ctrl+ W. Vous pouvez également utiliser Ctrl+ W+ la flèche ou la touche ( H, J, Kou L) correspondant à l'image suivante. Lorsque cela est fait, éditez le fichier que vous voulez :e file_name. :help opening-windowvous aidera plus à ce sujet.

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

vim -d first_file second_file ...

S'il vous plaît laissez-moi savoir si vous avez un problème.

Aleroy
la source
0

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

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

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

Exemple: consulter des fichiers ou exécuter des tests à droite, éditer des fichiers de test et des fichiers source à gauche: entrez la description de l'image ici

Michael Durrant
la source
0

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

:p pour le fichier précédent

:n pour le fichier suivant

bala selvam
la source
Bienvenue à U & L, cela n’ajoute rien à une autre réponse postée il ya des années.
Archemar