Question Comment travailler efficacement avec plusieurs fichiers dans Vim?


J'ai commencé à utiliser Vim pour développer des scripts Perl et je commence à le trouver très puissant.

Une chose que j'aime est de pouvoir ouvrir plusieurs fichiers à la fois avec, par exemple, vi main.pl maintenance.pl puis hop entre eux avec:

:n
:prev

et voir quel fichier est ouvert avec

:args

Et pour ajouter un fichier, je peux dire:

:n test.pl

ce que j'attends serait alors ajouté à ma liste de fichiers, mais à la place il efface ma liste de fichiers actuelle et quand je tape :args j'ai seulement test.pl ouvrir.

Alors, comment puis-je ajouter et supprimer des fichiers à ma liste d'args?


969
2017-09-10 09:03


origine


Réponses:


Pourquoi ne pas utiliser les onglets (introduits dans Vim 7)? Vous pouvez basculer entre les onglets avec :tabn et :tabp, Avec :tabe <filepath> vous pouvez ajouter un nouvel onglet; et avec un régulier :q ou :wq vous fermez un onglet. Si vous mappez :tabn et :tabp à ton F7/F8 touches que vous pouvez facilement basculer entre les fichiers.

S'il n'y a pas beaucoup de fichiers ou si vous n'avez pas Vim 7, vous pouvez également diviser votre écran en plusieurs fichiers: :sp <filepath>. Ensuite, vous pouvez basculer entre splitscreens avec Ctrl+W puis une touche fléchée dans la direction que vous voulez déplacer (ou à la place des touches fléchées, w pour le prochain et W pour le splitscreen précédent)


1052
2017-09-10 09:09



Inscription

Pour voir une liste des tampons actuels, j'utilise:

:ls

Ouverture

Pour ouvrir un nouveau fichier, j'utilise

:e ../myFile.pl

avec l'amélioration de l'onglet (mettre set wildmenu dans ton .vimrc).

Note: vous pouvez également utiliser :find qui va rechercher un ensemble de chemins pour vous, mais vous devez d'abord personnaliser ces chemins.


Commutation

Pour basculer entre tous les fichiers ouverts, j'utilise

:b myfile

avec l'amélioration de l'onglet (toujours set wildmenu).

Remarque: :b# choisit le dernier fichier visité, vous pouvez donc l'utiliser pour basculer rapidement entre deux fichiers.


Utiliser des fenêtres

Ctrl-W s et Ctrl-W v diviser la fenêtre actuelle horizontalement et verticalement. Vous pouvez aussi utiliser :split et :vertical split (:sp et :vs)

Ctrl-W w pour basculer entre les fenêtres ouvertes, et Ctrl-W h (ou j ou k ou l) pour naviguer dans les fenêtres ouvertes.

Ctrl-W c pour fermer la fenêtre actuelle, et Ctrl-W o pour fermer toutes les fenêtres sauf celle en cours.

Démarrer vim avec un -o ou -O flag ouvre chaque fichier dans sa propre division.


Avec tout cela je n'ai pas besoin d'onglets dans Vim, et mes doigts trouvent mes tampons, pas mes yeux.

Note: si vous voulez que tous les fichiers vont à la même instance de Vim, démarrez Vim avec le --remote-silent option.


492
2017-09-10 09:47



:ls

pour la liste des buffers ouverts

  • :bp tampon précédent
  • :bn tampon suivant
  • :bn (n un nombre) se déplace au n'th buffer
  • :b <filename-part> avec la touche de tabulation fournissant l'auto-complétion (génial !!)

Dans certaines versions de vim, bn et bp sont en fait bnext et bprevious respectivement. L'onglet auto-complet est utile dans ce cas.

Ou lorsque vous êtes en mode normal, utilisez ^ pour passer au dernier fichier sur lequel vous travailliez.

De plus, vous pouvez enregistrer des sessions de vim

:mksession! ~/today.ses

La commande ci-dessus enregistre les tampons de fichiers ouverts et les paramètres actuels ~/today.ses. Vous pouvez charger cette session en utilisant

vim -S ~/today.ses

Pas de soucis de se rappeler où vous vous êtes arrêté hier. ;)


202
2017-09-15 19:03



Pour ajouter à la args liste:

:argadd

Pour supprimer de la args liste:

:argdelete

Dans votre exemple, vous pouvez utiliser :argedit test.pl pour ajouter test.pl au args liste et édite le fichier en une étape.

:help args donne beaucoup plus de détails et d'utilisation avancée


96
2017-09-10 09:34



J'utilise des commandes de tampon - :bn (tampon suivant), :bp (tampon précédent) :buffers (liste des tampons ouverts) :b<n> (tampon ouvert n) :bd (supprimer le tampon). :e <filename> va juste ouvrir dans un nouveau tampon.


45
2017-09-10 09:43



Je pense que vous utilisez peut-être la mauvaise commande pour regarder la liste des fichiers que vous avez ouverts.

Essayez de faire un :ls pour voir la liste des fichiers que vous avez ouverts et vous verrez:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Vous pouvez ensuite faire défiler les fichiers en vous référant aux numéros indiqués, par ex. : 3b

ou vous pouvez diviser votre écran en entrant le numéro mais en utilisant sb au lieu de simplement b.

En aparté% fait référence au fichier actuellement visible et # se réfère au fichier alternatif.

Vous pouvez facilement basculer entre ces deux fichiers en appuyant sur Ctrl  Décalage  6

Modifier: comme :ls vous pouvez utiliser :reg pour voir le contenu actuel de vos registres, y compris les registres 0-9 contenant ce que vous avez supprimé. Ceci est particulièrement utile si vous souhaitez réutiliser du texte que vous avez précédemment supprimé.


36
2017-09-10 09:34



Vim (mais pas l'original Vi!) A des onglets que je trouve (dans de nombreux contextes) supérieurs aux tampons. Tu peux dire :tabe [filename] pour ouvrir un fichier dans un nouvel onglet. Le cyclage entre les onglets se fait en cliquant sur l'onglet ou par les combinaisons de touches [n]gt et gT. Vim graphique a même des onglets graphiques.


30
2017-09-10 09:07



Des choses comme :e et :badd n'acceptera qu'un seul argument, donc les suivants échoueront

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Si vous souhaitez ajouter plusieurs fichiers depuis vim, utilisez arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

23
2017-12-08 19:43



Beaucoup de réponses ici! Ce que j'utilise sans réinventer la roue - les plugins les plus célèbres (qui ne vont pas mourir de sitôt et sont utilisés par beaucoup de gens) pour être ultra rapides et geek.

  • ctrlpvim / ctrlp.vim - pour trouver le fichier par nom recherche floue par son emplacement ou juste son nom
  • jlanzarotta / bufexplorer - pour parcourir les buffers ouverts (lorsque vous ne vous rappelez pas du nombre de fichiers que vous avez ouverts et modifiés récemment et que vous ne vous souvenez plus où ils se trouvent, probablement parce que vous les avez recherchés avec Ag)
  • rking / ag.vim faire une recherche dans les fichiers par rapport à gitignore
  • scrooloose / nerdtree pour voir la structure du répertoire, lookaround, ajouter / supprimer / modifier des fichiers

METTRE À JOUR : Récemment j'utilise dyng / ctrlsf.vim  pour rechercher avec vue contextuelle (comme la recherche Sublime) et j'ai changé le moteur de ag à ripgrep. La performance est exceptionnelle.


21
2018-03-31 11:47



Certaines réponses dans ce fil suggèrent d'utiliser des onglets et d'autres suggèrent d'utiliser un tampon pour accomplir la même chose. Les onglets et les tampons sont différents. Je vous suggère fortement de lire cet article Vim Tab folie - Buffers vs Tabs

Voici un joli résumé que j'ai tiré de l'article:

Résumé:

  • Un tampon est le texte en mémoire d'un fichier.
  • Une fenêtre est une fenêtre sur un tampon.
  • Une page à onglet est une collection de fenêtres.

15
2018-06-18 12:47



Lorsque j'utilise plusieurs fichiers dans vim, j'utilise principalement ces commandes (avec ~ 350 fichiers ouverts):

  • :b <partial filename><tab> (sauter à un tampon)
  • :bw (tampon tampon, supprimer un tampon)
  • :e <file path> (éditer, ouvrir un nouveau tampon>
  • pltags - Activer le saut aux définitions de sous-routine / méthode

14
2017-09-15 17:15