Si j'utilise:
:tabedit file1 file2
Je reçois:
E172: Only one file name allowed
Existe-t-il un moyen d'utiliser :tabedit
avec plusieurs noms de fichiers? Ou une autre façon d'ouvrir plusieurs onglets à la fois?
tabbed-user-interface
Martin Tournoij
la source
la source
:args *.c | tab all
. L'autre question est plus populaire que celle-ci, il est donc bon de la lier également.Réponses:
Étant donné les problèmes et la complexité de mon autre réponse en utilisant la méthode "intégrée" en modifiant la liste d'arguments, j'ai ajouté une petite fonction pour le faire:
Vous pouvez maintenant utiliser
:Tabedit *.vim
. Cette fonction étendra tous les modèles de globbing et s'exécutera:tabedit <f>
pour chaque fichier. Vous pouvez ajouter autant de chemins que vous le souhaitez, par exemple tout cela fonctionne:Eh bien, et ainsi de suite ...
Je mets cela dans un petit globedit.vim plug - in, qui contient également commande pour
:Edit
,:Split
etc.la source
[<f-args>]
au lieu de"<args>"
- de cette façon, lepattern
paramètre sera une liste (tableau) et vous n'aurez pas à gérer le fractionnement manuel de la chaîne. (2) Passez un non-zéro comme troisième argument pourglob()
qu'il renvoie une liste. Ensuite, vous pouvez également éviter de vous séparer manuellement. Vous aurez besoin de passer0
comme second argument de l' ignorer sans affecter le comportement:glob(l:p, 0, 1)
.Pour autant que je sache, la seule façon intégrée de le faire est:
Tout d'abord, le
:args
remplacera la liste des arguments. La liste des arguments répertorie les fichiers avec lesquels vous avez ouvert Vim;vim file1 file2
signifie donc que la liste d'arguments contientfile1
etfile2
.Nous pouvons le modifier au moment de l'exécution, et Vim ouvrira un tampon pour chaque nouvelle entrée dans la liste des arguments.
Voir
:help argument-list
pour plus d'informations.La
:all
commande ouvre une fenêtre pour chaque entrée de la liste des arguments, la:tab
commande exécute une commande et ouvre un nouvel onglet lorsque la commande donnée ouvre une nouvelle fenêtre.Avertissements
Il y a quelques mises en garde à cette méthode.
Tout d'abord, il n'y a pas de vérification des doublons, vous pouvez donc vous retrouver avec 2 onglets ou plus pour le même tampon.
Mais le plus gros problème est qu'il remplace tous vos onglets par ce qui se trouve dans la liste des arguments; vous avez donc perdu tous les onglets existants.
Vous pouvez légèrement contourner cela en utilisant
:argadd *.vim
pour ajouter à la liste des arguments, au lieu de la remplacer; mais des commandes telles que:edit
ou:tabedit
ne modifient pas la liste des arguments, et vous perdrez ces onglets à moins que vous ne les ajoutiez à la liste des arguments (vous les avez toujours dans la liste des tampons, cependant). Vous pouvez également ne pas vouloir tout ouvrir dans votre liste d'arguments dans un onglet, peut-être voulez-vous simplement ouvrir 2 fichiers en tant qu'onglet supplémentaire.Vous pourriez peut-être améliorer légèrement cela en ajoutant d'abord l'ajout de tous les onglets actuellement ouverts à la liste des arguments (que je ne peux pas vraiment travailler), mais cela est encore loin d'être parfait. Si un onglet a 2 fenêtres ou plus, il les modifiera quand même ...
la source
:argdo tabedit %
, ce qui ouvre un nouvel onglet pour chaque argument. Commencer avec un onglet et en ouvrir n nouveaux vous laisserait naturellement avec n + 1 onglets.:tab all
est une bien meilleure solution.Vous pouvez utiliser la
:next
commande à la place, par exemple:ou:
la source
:args *.vim
? Au moins, il se comporte de la même manière, et le:help next_f
documente comme étant le même ...Depuis la ligne de commande, vous pouvez utiliser:
Et si vous avez oublié d'utiliser
-p
encore, vous pouvez utiliserBtw, n'oubliez pas que la variable
tabpagemax
(valeur par défaut 10) limite le nombre d'onglets que vous pouvez ouvrir de cette façon.la source
Vous pouvez réellement ouvrir de nouveaux onglets et conserver vos onglets actuels sans écrire de nouvelles fonctions (voir cette réponse sur Stack Overflow ):
Vous voudrez peut-être ouvrir un nouvel onglet vide (
:tabe
) avant de le faire, car le premier fichier s'ouvrira dans l'onglet actuel. De plus, un onglet vide supplémentaire sera laissé ouvert (voir:help argdo
pour comprendre pourquoi).la source
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
la vous devez appuyer sur Entrée pour effacer l'invite et taper:close
pour supprimer le dernier ( vide) onglet ... c'est énormément de frappe, et ça ne vaut le coup que si vous ouvrez beaucoup d'onglets (pour 2 ou 3 fichiers, une simple utilisation:tabe
deux fois serait plus rapide).