115 votes

Comment faire en sorte que vim ouvre plusieurs fichiers dans des onglets à la fois ?

Est-il possible de faire en sorte que vim ouvre plusieurs fichiers dans des onglets, de la même manière que la fonction args <path> ouvrira plusieurs fichiers dans des tampons ?

Faire quelque chose comme :tabe ./* entraîne l'erreur "E77 : Trop de noms de fichiers", même si le nombre de fichiers est inférieur à la valeur définie dans la fenêtre de l'interface utilisateur. tabpagemax propriété.

(Je crois que le vim -p <files> s'ouvrira dans les onglets, mais j'espère trouver un moyen de le faire lorsque vim est déjà ouvert).

106voto

Unnati Gutpa Points 11
:tab all

ouvrira tous les fichiers de la liste d'arguments de Vim dans des onglets individuels. La liste d'arguments est initialement définie comme la liste des noms de fichiers donnés sur la ligne de commande lorsque Vim est lancé. La liste peut être modifiée avec la commande :args et les commandes connexes. Voir

:help :all
:help argument-list

Exemple :

:args *.c
:tab all

ouvrira tous les fichiers .c du répertoire courant dans des onglets individuels.

7voto

Mihai Capotă Points 1013

Vous pouvez en fait ouvrir de nouveaux onglets et conserver vos onglets actuels sans écrire de nouvelles fonctions. Voir cette réponse sur Stack Overflow : https://stackoverflow.com/a/11430615/200234

:args file1 file2 | argdo tabe

Vous pouvez 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 (cf. :help argdo pour comprendre pourquoi).

2voto

Big McLargeHuge Points 656

Pour ouvrir des fichiers dans de nouveaux onglets sans remplacer les arguments ou les onglets déjà ouverts :

:argadd *.c | tab all

Ce point a été mentionné dans un commentaire, mais je pense qu'il mérite sa propre réponse.

Aussi, pour rechercher des fichiers dans les sous-répertoires :

:argadd code/**/*.c | tab all

0voto

Xopi García Points 1

J'ai adapté la solution de @Mihai Capota, en ajoutant un changement automatique de répertoire au fichier courant. Ajoutez cette ligne au fichier $HOME/.vimrc :

nnoremap <C-S-t> :cd<Space>%:p:h<CR>:tabe<CR>:args<Space>*.html<Space>\|<Space>argdo<Space>tabe<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>

Explication du code :

<C-S-t>

correspond à Crtrl-Shit-T (comme FireFox est Ctrl-T pour nouvel onglet)

:cd<Space>%:p:h<CR>

changer le répertoire pour celui du fichier courant ouvert dans VIM, lire : https://vim.fandom.com/wiki/Set_working_directory_to_the_current_file

:tabe<CR>

lire la solution de @Mihai Capota

:args<Space>*.html<Space>\|<Space>argdo<Space>tabe

lire la même chose

<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>

déplacer le curseur sur l'astérisque

Pour s'améliorer :

  1. l'onglet actuel sera un vide (il suffit de le fermer par Ctrl-W-q ou :q). Idéalement, cet onglet devrait être autoclosé (également à partir de buffer).
  2. revenir à l'onglet précédent peut être facile si vous vous en souvenez, par exemple si c'était le 1er onglet, appuyez simplement sur 1gt ou :tabr. Idéalement, ce retour à la touche précédente devrait être automatique.

PD : il peut s'agir d'un commentaire et non d'une solution, si c'est le cas, veuillez le commenter, je ne peux pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X