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:
vi main.pl maintenance.pl
puis sautez entre eux avec:
:n
:prev
et voyez quels fichiers sont ouverts avec:
:args
Et pour ajouter un fichier, je peux dire:
:n test.pl
qui, je l'espère, serait alors ajouté à ma liste de fichiers, mais à la place, il efface ma liste de fichiers actuelle et lorsque je tape, :args
je n'ai test.pl
ouvert.
Alors, comment puis-je ajouter et supprimer des fichiers dans ma liste d'arguments?
:N
semble être un moyen plus facile d'aller au fichier précédent ...Réponses:
Pourquoi ne pas utiliser des 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 habitué:q
ou:wq
vous fermez un onglet. Si vous mappez:tabn
et:tabp
à vos touches F7/ F8, vous pouvez facilement basculer entre les fichiers.S'il n'y a pas beaucoup de fichiers ou vous n'avez pas 7 vous pouvez Vim également diviser votre écran en plusieurs fichiers:
:sp <filepath>
. Ensuite, vous pouvez basculer entre les écrans fractionnés avec Ctrl+ Wpuis une touche fléchée dans la direction que vous souhaitez déplacer (ou au lieu des touches fléchées, wpour l' Wécran fractionné suivant et précédent)la source
ZZ
place de:wq
(comme vous le feriez normalement pour enregistrer et fermer)gt
passe à l'onglet suivant etgT
à l'onglet précédent.-p
indicateur pour ouvrir plusieurs fichiers dans des onglets à partir de la ligne de commande. Par exemple,gvim -p main.pl maintenance.pl
ouvrira ces deux fichiers dans des onglets.Référencement
Pour voir une liste des tampons actuels, j'utilise:
Ouverture
Pour ouvrir un nouveau fichier, j'utilise
avec complétion de tabulation améliorée (insérez
set wildmenu
votre.vimrc
).Remarque: vous pouvez également utiliser
:find
qui recherchera un ensemble de chemins pour vous, mais vous devez d'abord personnaliser ces chemins.Commutation
Pour basculer entre tous les fichiers ouverts, j'utilise
avec complétion améliorée des onglets (encore
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
etCtrl-W v
pour diviser la fenêtre actuelle horizontalement et verticalement. Vous pouvez également utiliser:split
et:vertical split
(:sp
et:vs
)Ctrl-W w
pour basculer entre les fenêtres ouvertes etCtrl-W h
(ouj
ouk
oul
) pour naviguer dans les fenêtres ouvertes.Ctrl-W c
pour fermer la fenêtre actuelle etCtrl-W o
pour fermer toutes les fenêtres à l'exception de la fenêtre actuelle.Démarrer vim avec un drapeau
-o
ou-O
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.
Remarque: si vous souhaitez que tous les fichiers aillent dans la même instance de Vim, démarrez Vim avec l'
--remote-silent
option.la source
:b
est une commande très puissante car elle peut accepter à la fois les numéros de tampon et les noms de tampon comme arguments. Quoi de plus? Il prend également en charge la saisie par tabulation sur n'importe quelle partie du nom de fichier. Dites, vous avez ouvert foo.txt dans le tampon 2, vous pouvez taper:b 2<Enter>
ou:b foo.txt
ou:b oo<Tab><Enter>
pour éditer ce fichier. Oui, le dernier compléterait «oo» à «foo.txt» lorsque vous appuyez sur <Tab>.nnoremap gb :ls<cr>:b<space>
. Lorsque je tapegb
en mode commande, il répertorie mes tampons et types ouverts:b
, prêt pour moi à commencer à taper un nom / numéro de tampon.:b
acceptera une correspondance de sous-chaîne tant qu'elle n'est pas ambiguë. Donc , si vous avez des fichiers ouvertsfoo
,bar
etbaz
, juste:b z
suffit à vous passer à labaz
mémoire tampon, et:b oo
ou:b o
vous amène à lafoo
mémoire tampon.pour la liste des tampons ouverts
:bp
tampon précédent:bn
tampon suivant:bn
(n
un certain nombre) déplacer vers le cinquième tampon:b <filename-part>
avec touche de tabulation permettant la complétion automatique (génial !!)Dans certaines versions de vim,
bn
etbp
sont en faitbnext
etbprevious
respectivement. La saisie automatique des onglets est utile dans ce cas.Ou lorsque vous êtes en mode normal, utilisez
^
pour basculer vers le dernier fichier sur lequel vous travailliez.De plus, vous pouvez enregistrer des sessions de vim
La commande ci-dessus enregistre les tampons et les paramètres des fichiers ouverts actuels dans
~/today.ses
. Vous pouvez charger cette session en utilisantPas de souci de vous rappeler où vous en étiez hier. ;)
la source
"
marque pour revenir à l'endroit où vous vous trouviez dans le fichier la dernière fois.Pour ajouter à la
args
liste:Pour supprimer de la
args
liste:Dans votre exemple, vous pouvez utiliser
:argedit
test.pl pour ajouter test.pl à laargs
liste et modifier le fichier en une seule étape.:help args
donne beaucoup plus de détails et une utilisation avancéela source
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 s'ouvrir dans un nouveau tampon.la source
Je pense que vous utilisez peut-être la mauvaise commande pour consulter 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:Vous pouvez ensuite rebondir sur les fichiers en vous y référant par les numéros indiqués, par exemple: 3b
ou vous pouvez diviser votre écran en entrant le numéro mais en utilisant sb au lieu de simplement b.
En tant que côté,% fait référence au fichier actuellement visible et # fait référence au fichier alternatif.
Vous pouvez facilement basculer entre ces deux fichiers en appuyant sur Ctrl Shift 6
Modifier: comme
:ls
vous pouvez utiliser:reg
pour voir le contenu actuel de vos registres, y compris les registres 0-9 qui contiennent ce que vous avez supprimé. Ceci est particulièrement utile si vous souhaitez réutiliser du texte que vous avez précédemment supprimé.la source
Vim (mais pas le Vi original!) A des onglets que je trouve (dans de nombreux contextes) supérieurs aux tampons. Vous pouvez dire
:tabe [filename]
d'ouvrir un fichier dans un nouvel onglet. Le cycle entre les onglets se fait en cliquant sur l'onglet ou par les combinaisons de touches [ n ]gt
etgT
. Vim graphique a même des onglets graphiques.la source
vim -p dir/*
. La taille maximale de l'onglet est de 10, mais vous pouvez la modifier en~/.vimrc
définissanttabpagemax
une autre valeur.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 si tôt et qui sont utilisés par beaucoup de gens) pour être ultra rapides et geek.
EDIT: J'ai récemment utilisé dyng / ctrlsf.vim pour rechercher avec une vue contextuelle (comme la recherche sublime) et j'ai changé le moteur de ag en ripgrep . La performance est exceptionnelle.
EDIT2: Avec CtrlSF, vous pouvez utiliser mg979 / vim-visual-multi , apporter des modifications à plusieurs fichiers à la fois, puis les enregistrer en une seule fois.
la source
Des choses comme
:e
et:badd
n'accepteront qu'un seul argument, donc les suivantes échouerontSi vous souhaitez ajouter plusieurs fichiers à partir de vim, utilisez
arga[dd]
la source
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 Madness - Buffers vs Tabs ".
Voici un joli résumé que j'ai tiré de l'article:
Sommaire:
la source
:help window
VimLorsque j'utilise plusieurs fichiers dans vim, j'utilise principalement ces commandes (avec ~ 350 fichiers ouverts):
:b <partial filename><tab>
(passer à un tampon):bw
(effacement du tampon, supprimer un tampon):e <file path>
(modifier, ouvrir un nouveau tampon>pltags
- permet de passer aux définitions de sous-programme / méthodela source
:b <partial filename><tab>
plusset wildmenu
dans vos.vimrc
travaux bien quand vous avez des tonnes de tampons ouverts. Ensuite, il vous suffit de faire correspondre partiellement et de faire défiler ceux qu'il trouve. Dans d'autres éditeurs décents, vous avez une recherche floue, mais normalement vous ne pouvez pas limiter cette recherche floue aux seuls fichiers que vous avez ouverts.Ajouter une autre réponse car elle n'est couverte par aucune des réponses
Pour modifier tous les tampons à
tab
afficher.ouvrira tous les tampons en vue onglet. Ensuite, nous pouvons utiliser toutes les commandes liées aux onglets
détails à
:help tab-page-commands
.Nous pouvons demander à vim d'ouvrir, sous forme d'onglet, plusieurs fichiers par
vim -p file1 file2
.alias vim='vim -p'
Sera utile.La même chose peut également être obtenue en suivant la commande automatique dans
~/.vimrc
Quoi qu'il en soit pour répondre à la question: Pour ajouter à la liste d'arguments:
arga file
,Pour supprimer de la liste d'arguments:
argd pattern
Plus à
:help arglist
la source
Vous pouvez utiliser des marques globales Vim .
De cette façon, vous pouvez rapidement rebondir entre les fichiers, et même à l'emplacement marqué dans le fichier. De plus, les raccourcis clavier sont courts:
'C
me conduisent au code avec lequel je travaille,'T
me conduisent au test unitaire avec lequel je travaille.Lorsque vous changez de place, la réinitialisation des repères est également rapide:
mC
marque le nouveau point de code,mT
marque le nouveau point de test.la source
J'utilise le même fichier .vimrc pour gVim et la ligne de commande Vim. J'ai tendance à utiliser des onglets dans gVim et des tampons dans la ligne de commande Vim, j'ai donc mon .vimrc configuré pour faciliter le travail avec les deux:
Cela détruit les mappages existants pour Het L, mais cela permet de basculer entre les fichiers extrêmement rapidement et facilement. Il suffit de frapper Hpour le suivant et Lpour le précédent; que vous utilisiez des onglets ou des tampons, vous obtiendrez les résultats escomptés.
la source
Si vous allez utiliser plusieurs tampons, je pense que la chose la plus importante est de définir caché pour qu'il vous permette de changer de tampon même si vous avez des changements non enregistrés dans celui que vous quittez.
la source
Si vous n'utilisez que des commandes intégrées vim , la meilleure que j'ai jamais vue pour basculer entre plusieurs tampons est la suivante:
Il combine parfaitement les deux
:ls
et les:b
commandes - listant tous les tampons ouverts et attendant que vous entriez la commande pour changer de tampon.Étant donné le mappage ci-dessus dans vimrc, une fois que vous tapez
<Leader>f
,23
pour aller au tampon 23,#
pour aller à la mémoire tampon alternative / MRU,<Tab>
ou<C-i>
pour la saisie semi-automatique,<CR>
ou<Esc>
pour rester sur le tampon actuelUn instantané de la sortie pour le mappage de touches ci-dessus est:
Dans l'instantané ci-dessus:
%a
pour le courant,h
pour le caché,#
pour précédent, vide pour n'a pas été changé pour.+
pour modifié.Aussi, je suggère fortement
set hidden
. Tu vois:help 'hidden'
.la source
:b
et:ls
beaucoup mais indépendamment. Je pense que cela devient moins utile lorsque vous avez plus d'une page de tampons, mais vous pouvez toujours revenir à:b
nnoremap <leader>f :ls<cr>:b<space>
, ce qui pourraitset more
les choses ne font de différence que lorsqu'il y a beaucoup de fichiers ouverts (plus d'une page), par exemplevim /usr/include/*
, bien que moins utiles alors.J'utilise ce qui suit, cela vous donne beaucoup de fonctionnalités que vous attendez d'avoir dans d'autres éditeurs tels que Sublime Text / Textmate
.vimrc
:let g:airline#extensions#tabline#enabled = 1
. Cela affiche automatiquement tous les tampons comme en-têtes d'onglet lorsque vous n'avez aucune page d'onglet ouverteset wildmenu
dans votre.vimrc
puis lorsque vous tapez:b <file part>
+ Tabpour un tampon, vous obtiendrez une liste de tampons possibles que vous pouvez utiliser les flèches gauche / droite pour faire défiler:Explore
mais il est beaucoup plus facile de travailler avec. Il vous suffit de taper-
pour ouvrir l'explorateur, qui est la même clé que pour remonter un répertoire dans l'explorateur. Rend la navigation plus rapide (cependant avec fzf je l'utilise rarement):cdo
les résultats pour effectuer une recherche et remplacerla source
Ma façon de travailler efficacement avec plusieurs fichiers est d'utiliser tmux.
Il vous permet de diviser les fenêtres verticalement et horizontalement, comme dans:
Je le fais fonctionner de cette façon sur mes machines Mac et Linux et je le trouve meilleur que le mécanisme de commutation de volet de fenêtre natif fourni (sur Mac). Je trouve la commutation plus facile et ce n'est qu'avec tmux que j'ai pu obtenir la `` nouvelle page dans le même répertoire actuel '' fonctionnant sur mon mac (malgré le fait qu'il semble y avoir des options pour ouvrir de nouveaux volets dans le même répertoire) qui est une pièce étonnamment critique. Un nouveau volet instantané à l'emplacement actuel est incroyablement utile. Une méthode qui fait de nouveaux volets avec les mêmes combinaisons de touches pour les deux systèmes d'exploitation est essentielle pour moi et un bonus pour tous pour une future compatibilité personnelle. Mis à part plusieurs volets tmux, j'ai également essayé d'utiliser plusieurs onglets, par exemple et plusieurs nouvelles fenêtres, par exempleet finalement, j'ai trouvé que plusieurs volets tmux étaient les plus utiles pour moi. Je suis très «visuel» et j'aime garder mes différents contextes juste devant moi, connectés les uns aux autres comme des volets.
tmux prend également en charge les volets horizontaux et verticaux, ce qui
screen
n'était pas le cas pour les anciens (bien que l'iterm2 de mac semble le prendre en charge, mais encore une fois, le paramètre de répertoire actuel ne fonctionnait pas pour moi). tmux 1.8la source
J'utilise la ligne de commande et git beaucoup, j'ai donc cet alias dans mon bashrc:
Cela ouvrira chaque nouveau fichier dans un nouvel onglet sur une fenêtre existante et créera une fenêtre pour chaque référentiel git. Donc, si vous ouvrez deux fichiers du repo A et 3 fichiers du repo B, vous vous retrouverez avec deux fenêtres, une pour le repo A avec deux onglets et une pour le repo B avec trois onglets.
Si le fichier que vous ouvrez n'est pas contenu dans un dépôt git, il ira dans une fenêtre par défaut.
Pour sauter entre les onglets, j'utilise ces mappages:
Pour ouvrir plusieurs fichiers à la fois, vous devez combiner cela avec l'une des autres solutions.
la source
J'utilise plusieurs tampons qui sont définis cachés dans mon
~/.vimrc
fichier.Le script de l'explorateur de mini-tampons est également sympa pour obtenir une belle liste compacte de vos tampons. Ensuite
:b1
ou:b2
... pour accéder au tampon approprié ou utilisez l'explorateur de mini-tampons et parcourez les tampons.la source
essayez de suivre les cartes pour éditer facilement plusieurs fichiers
"fenêtres fractionnées
nmap <leader>sh :leftabove vnew<CR>
nmap <leader>sl :rightbelow vnew<CR>
nmap <leader>sk :leftabove new<CR>
nmap <leader>sj :rightbelow new<CR>
"se déplacer
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
nmap <C-h> <C-w>h
la source
J'ai fait une vidéo très simple montrant le flux de travail que j'utilise. Fondamentalement, j'utilise le Ctrl-P plugin Vim, et j'ai mappé la navigation du tampon à la touche Entrée.
De cette façon, je peux appuyer sur Entrée en mode normal, regarder la liste des fichiers ouverts (qui apparaît dans une petite nouvelle fenêtre au bas de l'écran), sélectionner le fichier que je veux modifier et appuyer à nouveau sur Entrée. Pour rechercher rapidement parmi plusieurs fichiers ouverts, tapez simplement une partie du nom de fichier, sélectionnez le fichier et appuyez sur Entrée.
Je n'ai pas beaucoup de fichiers ouverts dans la vidéo, mais cela devient incroyablement utile lorsque vous commencez à en avoir beaucoup.
Étant donné que le plugin trie les tampons à l'aide d'un ordre MRU, vous pouvez simplement appuyer sur Entrée deux fois et passer au fichier le plus récent que vous éditiez.
Une fois le plugin installé, la seule configuration dont vous avez besoin est:
Bien sûr, vous pouvez le mapper sur une clé différente, mais je trouve que le mappage à saisir est très pratique.
la source
Je suggérerais d'utiliser le plugin
Voici le lien github avec les instructions.
Nerdtree
J'utilise vim-plug comme gestionnaire de plugins, mais vous pouvez également utiliser Vundle.
vim-plug
Vundle
la source
Dans mon et dans de nombreux autres utilisateurs de vim, la meilleure option est de,
Et puis juste Ctrl + 6 pour passer au dernier tampon. Ou, vous pouvez toujours appuyer sur
Et puis
<C-W><C-H/K/L/j>
pour changer la division de travail.Vous pouvez bien sûr éditer n'importe quel fichier en un nombre illimité de divisions.
la source
Lorsque j'ai commencé à utiliser VIM, je ne savais pas que les onglets étaient censés être utilisés comme différentes dispositions de fenêtre, et le tampon sert de rôle pour l'édition / la commutation de plusieurs fichiers entre eux. En fait, au début, les onglets ne sont même pas là avant la v7.0 et je viens d'ouvrir un VIM à l'intérieur d'un onglet de terminal (j'utilisais gnome-terminal pour le moment), et de basculer entre les onglets en utilisant alt + chiffres, car je pensais utiliser des commandes comme : buffers,: bn et: bp étaient trop pour moi. Lorsque VIM 7.0 est sorti, je trouve qu'il est plus facile de gérer un grand nombre de fichiers et d'y basculer, mais récemment, je viens de réaliser que les tampons devraient toujours être la voie à suivre, sauf une chose: vous devez le configurer pour qu'il fonctionne correctement.
J'ai donc essayé vim-airlines et activé la barre de mémoire tampon en forme d'onglet, mais le graphique rencontrait des problèmes avec mon iTerm2, j'ai donc essayé quelques autres et il semble que MBE fonctionne le mieux pour moi. J'ai également défini shift + h / l comme raccourcis, car les originaux (se déplaçant vers la tête / la queue de la page actuelle) ne me sont pas très utiles.
map <S-h> :bprev<Return>
map <S-l> :bnext<Return>
Cela semble encore plus facile que gt et gT, et: e est plus facile que: tabnew aussi. Je trouve: bd n'est pas aussi pratique que: q cependant (MBE a un problème avec ça) mais je peux vivre avec tous les fichiers dans le tampon je pense.
la source
si vous êtes sur osx et que vous voulez pouvoir cliquer sur vos onglets, utilisez MouseTerm et SIMBL (prises à partir d' ici ). Consultez également cette discussion connexe .
la source
La plupart des réponses dans ce fil utilisent des commandes vim simples, ce qui est bien sûr bien, mais je pensais que je fournirais une réponse complète en utilisant une combinaison de plugins et de fonctions que je trouve particulièrement utiles (au moins certains de ces conseils proviennent du fichier de Gary Bernhardt conseils de navigation ):
Pour basculer entre les deux derniers fichiers, appuyez simplement
<leader>
deux fois sur. Je recommande d'assigner<leader>
à la barre d'espace:Pour vous déplacer rapidement dans un projet, la réponse est une solution de correspondance floue telle que CtrlP . Je le lie à
<leader>a
pour un accès rapide.Dans le cas où je veux voir une représentation visuelle des tampons actuellement ouverts, j'utilise le plugin BufExplorer . Simple mais efficace.
Si je veux parcourir le système de fichiers, j'utiliserais la ligne de commande ou un utilitaire externe (Quicklsilver, Afred etc.) mais pour regarder la structure actuelle du projet, NERD Tree est un classique. Ne l'utilisez pas à la place de
2
comme méthode de recherche de fichier principale. Cela va vraiment vous ralentir. J'utilise la reliure<leader>ff
.Ceux-ci devraient être suffisants pour rechercher et ouvrir des fichiers. De là, bien sûr, utilisez des séparations horizontales et verticales. Concernant les scissions, je trouve ces fonctions particulièrement utiles:
Ouvrez de nouvelles divisions dans des zones plus petites lorsqu'il n'y a pas assez de place et agrandissez-les lors de la navigation. Reportez-vous ici pour des commentaires sur leur fonction exacte:
Passez du split au split facilement:
la source
Vous pouvez être un fou absolu et alias
vim
àvim -p
en ajoutant dans votre.bashrc
:alias vim="vim -p"
Cela se traduira par l'ouverture de plusieurs fichiers à partir du shell dans des onglets, sans avoir à appeler
:tab ball
depuis l'intérieur de vim par la suite.la source