Question

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

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

:n
:prev

et de voir quels fichiers sont ouverts avec

:args

Et pour ajouter un fichier, je peux dire:

:n test.pl

qui je m'attends pourra alors être AJOUTÉE à ma liste de fichiers, mais au lieu de cela elle efface ma liste de fichier et quand je tape :args Je n'ai qu' test.pl ouvert.

Alors, comment puis-je AJOUTER et SUPPRIMER des fichiers à mon args liste?

Était-ce utile?

La solution

Pourquoi ne pas utiliser les onglets (présenté dans Vim 7)?Vous pouvez basculer entre les onglets avec :tabn et :tabp, Avec :tabe <filepath> vous pouvez ajouter un nouvel onglet;et avec une régulière :q ou :wq vous fermez un onglet.Si vous avez la carte :tabn et :tabp pour votre F7/F8 touches, vous pouvez facilement basculer entre les fichiers.

Si il n'y a pas que de nombreux fichiers ou vous n'avez pas Vim 7 vous pouvez également diviser votre écran en plusieurs fichiers: :sp <filepath>.Ensuite, vous pouvez basculer entre les splitscreens avec Ctrl+W et puis une flèche dans la direction que vous souhaitez déplacer (ou à la place des touches fléchées, w pour la prochaine et W pour la précédente écran partagé)

Autres conseils

Liste

Pour voir une liste de tampons, j'utilise:

:ls

Ouverture

Pour ouvrir un nouveau fichier, j'utilise

:e ../myFile.pl

avec un renforcement de la saisie semi-automatique (mettre set wildmenu dans votre .vimrc).

Note:vous pouvez également utiliser :find qui permet de rechercher un ensemble de chemins d'accès pour vous, mais vous avez besoin de personnaliser les chemins de première.


De commutation

Pour basculer entre tous les fichiers ouverts, j'utilise

:b myfile

avec un renforcement de la saisie semi-automatique (encore set wildmenu).

Note: :b# choisit la dernière visite de fichier, de sorte que vous pouvez utiliser pour basculer rapidement entre les deux fichiers.


À l'aide de windows

Ctrl-W s et Ctrl-W v diviser la fenêtre en cours à l'horizontale et à la verticale.Vous pouvez également 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 à travers les fenêtres ouvertes.

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

Démarrage de vim avec un -o ou -O drapeau ouvre chaque fichier dans son propre split.


Avec toutes ces choses, je n'avez pas besoin d'onglets dans Vim, et mes doigts à trouver mes tampons, pas mes yeux.

Note:si vous voulez tous les fichiers d'aller à la même instance de Vim, démarrer Vim avec la --remote-silent option.

:ls

pour la liste des tampons

  • :bp tampon précédente
  • :bn à côté de la mémoire tampon
  • :bn (n un certain nombre) se déplacer vers la n-ième de la mémoire tampon
  • :b <filename-part> avec la touche tab de fournir l'auto-complétion (génial !!)

Dans certaines versions de vim, bn et bp sont en fait bnext et bprevious respectivement.Onglet de l'auto-complétion est utile dans ce cas.

Ou lorsque vous êtes en mode normal, l'utilisation ^ pour passer à la dernière fichier sur lequel vous travaillez.

De Plus, vous pouvez enregistrer des sessions de vim

:mksession! ~/today.ses

La commande ci-dessus pour enregistrer le fichier ouvert les tampons et les paramètres de ~/today.ses.Vous pouvez charger la session en utilisant

vim -S ~/today.ses

Pas de soucis de se souvenir où vous l'avez laissé hier.;)

Pour ajouter à la args liste:

:argadd

Pour supprimer à partir de la args liste:

:argdelete

Dans votre exemple, vous pourriez utiliser :argedit test.pl à ajouter test.pl à l' args liste et modifier le fichier en une seule étape.

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

J'utilise de la mémoire tampon des commandes - :bn (à côté de la mémoire tampon), :bp (tampon) :buffers (liste ouverte tampons) :b<n> (ouvrir tampon n) :bd (supprimer de la mémoire tampon). :e <filename> va juste ouvrir dans un nouveau tampon.

Je pense que vous utilisez peut-être le tort de 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 rebondir à travers les fichiers en se référant à eux en les numéros de la liste, par exemple:3b

ou vous pouvez diviser votre écran en entrant le numéro, mais à l'aide de sb au lieu de simplement b.

En aparté % fait référence au fichier actuellement visible et # renvoie à l'autre fichier.

Vous pouvez facilement basculer entre ces deux fichiers en appuyant sur Ctrl Maj 6

Edit:comme :ls vous pouvez utiliser :reg pour voir le contenu actuel de votre registres, y compris les chiffres de 0 à 9, les registres qui contiennent ce que vous avez supprimé.Ceci est particulièrement utile si vous souhaitez réutiliser une partie de texte que vous avez déjà supprimés.

Vim (mais pas l'original Vi!) a des onglets qui je trouve (dans de nombreux contextes) supérieure à tampons.Vous pouvez dire :tabe [filename] pour ouvrir un fichier dans un nouvel onglet.Le vélo entre les onglets se fait en cliquant sur l'onglet ou par la combinaison de touches [n]gt et gT.Graphique de Vim a même graphique les onglets.

Beaucoup de réponses ici!Ce que j'utilise, sans réinventer la roue - le plus célèbre des plugins (qui ne vont pas mourir de si tôt et sont utilisés par de nombreuses personnes) pour être ultra rapide et geek.

  • ctrlpvim/ctrlp.vim - trouver les fichiers par nom recherche floue par son emplacement ou tout simplement son nom
  • jlanzarotta/bufexplorer - pour parcourir ouvert tampons (lorsque vous ne vous souvenez combien de fichiers que vous avez ouvert et modifié récemment et vous ne vous rappelez pas où ils sont, sans doute parce que vous avez effectué une recherche pour eux avec l'Ag)
  • rking/ag.vim pour rechercher les fichiers à l'égard de gitignore
  • scrooloose/nerdtree pour voir la structure de répertoire, lookaround, ajouter/supprimer/modifier les fichiers

Mise à JOUR :Récemment, je suis en utilisant dyng/ctrlsf.vim à la recherche avec contextuel de la vue (comme Sublime de recherche) et j'ai changé le moteur de ag pour ripgrep.La performance est remarquable.

Des choses comme :e et :badd n'accepte UN argument, donc la suivante échoue

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

Si vous souhaitez ajouter plusieurs fichiers à partir de vim, l'utilisation arga[dd]

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

Lors de l'utilisation de plusieurs fichiers dans vim, j'ai utiliser ces commandes pour la plupart (avec ~350 fichiers ouverts):

  • :b <partial filename><tab> (sauter à un tampon)
  • :bw (tampon essuyer, enlever un tampon)
  • :e <file path> (edit, ouvrez un nouveau tampon>
  • pltags - activer le saut à la sous-routine/définitions de méthode

Quelques réponses dans ce fil de discussion suggèrent l'utilisation d'onglets et d'autres suggèrent à l'aide de la mémoire 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 Onglet de la folie - Tampons vs Onglets

Voici un beau résumé que j'ai sorti de l'article:

Résumé:

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

Vous souhaiterez peut-être utiliser Vim mondial des marques de.

De cette façon, vous pouvez rapidement rebondir entre les fichiers, et même à l'endroit marqué dans le fichier.Aussi, les commandes de touche sont courts: 'C prend moi pour le code je suis travailler avec, 'T me prend de l'unité de test, je suis travailler avec.

Lorsque vous changer de place, la réinitialisation de la marque est trop rapide: mC marque le nouveau code de spot, mT les marques de la nouvelle place.

J'utilise le même .fichiers vimrc pour GVim et de la ligne de commande vim.J'ai tendance à utiliser les onglets dans GVim et tampons dans la ligne de commande vim, donc j'ai mon .vimrc mis en place pour rendre le travail avec les deux plus facile:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

Cette clobbers les mappages existants pour H et L, mais il rend la commutation entre les fichiers extrêmement rapide et facile.Appuyez simplement sur "H" pour la prochaine et "L" pour la précédente;si vous êtes à l'aide de tabulations ou des tampons, vous obtiendrez les résultats escomptés.

Si vous allez utiliser plusieurs tampons, je pense que la chose la plus importante est de jeu de caché de sorte qu'il va vous permettre de passer des tampons, même si vous avez des modifications non enregistrées dans l'un que vous quittez.

L'ajout d'une autre réponse que ce n'est pas couverte par un à la réponse

Pour modifier tous les tampons à tab vue.

 :tab sball

permettra d'ouvrir tous les tampons sur l'onglet affichage.Ensuite, nous pouvons utiliser n'importe quel onglet commandes liées à la

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

des détails à l' :help tab-page-commands.

Nous pouvons nous charger de vim à ouvrir ,comme l'onglet de la vue, de plusieurs fichiers par vim -p file1 file2. alias vim='vim -p' sera utile.
La même chose peut également être réalisé en ayant des suivantes autocommand dans ~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

De toute façon à répondre à la question:Pour ajouter à arg liste: arga file,

Pour supprimer à partir arg liste: argd pattern

Plus à l' :help arglist

Ma façon de travailler efficacement avec plusieurs fichiers est d'utiliser tmux.

Il vous permet de diviser la fenêtre verticalement et horizontalement, comme dans:

enter image description here

Je l'ai en travaillant de cette façon, à la fois sur mon mac et linux, et je le trouve mieux que le natif de fenêtre volet mécanisme de commutation qui est fourni (sur Mac).Je trouve la manœuvre plus facile et seulement avec tmux, ai-je été en mesure d'obtenir la " nouvelle page dans le même répertoire courant de travail 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 étonnamment un élément essentiel.Un instant nouveau volet à la position actuelle est incroyablement utile.Une méthode qui ne nouveaux volets avec la même clé combos pour les deux OS de l'est essentiel pour moi et un bonus pour tous pour les futurs personnels de compatibilité.Outre de multiples combinaisons de volets, j'ai aussi essayé d'utiliser plusieurs onglets, par exemple enter image description here et plusieurs nouvelles fenêtres, par exemple enter image description here et, finalement, j'ai trouvé que plusieurs combinaisons de fenêtres pour être le plus utile pour moi.Je suis très "visuel" et tiens à garder mes différents contextes juste en face de moi, connectés ensemble, comme des volets.

tmux également de support horizontale et verticale des volets dont les plus âgés screen n'a pas (bien que mac iterm2 semble le soutenir, mais encore une fois, le répertoire courant de réglage ne fonctionne pas pour moi).tmux 1.8

Si en utilisant seulement vim commandes intégrées, le meilleur que j'ai jamais vu basculer entre plusieurs tampons est ceci:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Il combine parfaitement les deux :ls et :b commandes -- inscription ouvert toutes les tampons et en attente pour vous à la commande d'entrée de commutateur de la mémoire tampon.

Étant donné ci-dessus de la cartographie dans vimrc, une fois que vous tapez <Leader>f,

  • Ouvert tous les tampons sont affichés
  • Vous pouvez:
    • Type 23 pour aller de la mémoire tampon 23,
    • Type # pour aller à l'alternative/MRU tampon,
    • Tapez une partie du nom de fichier, tapez <Tab>, ou <C-i> pour la saisie semi-automatique,
    • Ou tout simplement <CR> ou <Esc> pour rester sur le tampon courant

Un instantané de la sortie de la clé ci-dessus cartographie est:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

Au-dessus de l'instantané:

  • Deuxième colonne: %a pour le courant, h caché, # pour la précédente, vide pour n'a pas été commuté.
  • Troisième colonne: + pour les modifiés.

Aussi, je vous suggère fortement set hidden.Voir :help 'hidden'.

J'utilise la suite, cela vous donne beaucoup de fonctionnalités que vous vous attendez à avoir dans d'autres éditeurs tels que Sublime Text / Textmate

  1. Utiliser des tampons pas onglet "pages".Les tampons sont le même concept que les onglets dans presque tous les autres éditeurs.
  2. Si tu veux le même look d'avoir des onglets, vous pouvez utiliser le vim-compagnie aérienne plugin avec le paramètre suivant dans votre .vimrc: let g:airline#extensions#tabline#enabled = 1.Cette affiche automatiquement tous les tampons, comme l'onglet en-têtes lorsque vous n'avez pas de pages à onglet ouvert
  3. Utilisation Tim du Pape vim-intacts ce qui donne [b et ]b pour passer à la suivante/précédente tampons respectivement (en plus d'une foule d'autres goodies)
  4. Ont set wildmenu dans votre .vimrc ensuite, lorsque vous tapez :b <file part> + Onglet pour un tampon, vous obtiendrez une liste de tampons que vous pouvez utiliser les flèches gauche/droite pour faire défiler
  5. Utilisation Tim du Pape vim-obsession plugin pour stocker les sessions qui jouent bien avec la compagnie aérienne (j'ai eu beaucoup de douleur, avec des séances et des plugins)
  6. Utilisation Tim du Pape vim-vinaigre plugin.Cela fonctionne avec les indigènes :Explore mais il est beaucoup plus facile de travailler avec.Vous tapez simplement - pour ouvrir l'explorateur, qui est la même touche que pour remonter d'un répertoire dans l'explorateur.Rend la navigation plus rapide (mais avec fzf j'utilise rarement ce)
  7. fzf (qui peut être installé comme un plugin vim) est aussi un très puissant floue finder que vous pouvez utiliser pour la recherche de fichiers (et les tampons trop).fzf aussi joue très bien avec fd (une version plus rapide de trouver)
  8. Utilisation Ripgrep avec vim-ripgrep à la recherche par le biais de votre base de code que vous pouvez utiliser :cdo sur les résultats de recherche et de remplacement

J'utilise la ligne de commande et git beaucoup de choses, donc j'ai cet alias dans mon bashrc:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Cela permettra d'ouvrir chaque fichier dans un nouvel onglet sur une fenêtre existante et créer une fenêtre pour chaque dépôt git.Donc, si vous ouvrez les deux fichiers à partir d'Un repo, et 3 fichiers à partir de pensions de B, vous allez vous retrouver avec deux fenêtres, l'une pour les pensions de Un à deux pattes et un pour les pensions de B avec trois onglets.

Si le fichier que vous ouvrez n'est pas contenue dans un repo git il ira à une fenêtre par défaut.

Pour naviguer entre les onglets-je utiliser ces mappages:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Pour ouvrir plusieurs fichiers à la fois, vous devez combiner cela avec l'une des autres solutions.

J'ai utiliser plusieurs tampons qui sont mis en cache dans ma ~/.vimrc fichier.

Le mini-tampon explorer script est sympa aussi, pour obtenir une belle compact liste de vos tampons.Alors :b1 ou :b2...pour aller à la appropriée de la mémoire tampon ou utilisez le mini-tampon de l'explorateur et de la languette par les tampons.

laissez-vous tenter cartes ci-après pour la commodité de l'édition de plusieurs fichiers

"split windows

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 autour de

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h

J'ai fait un très simple vidéo montrant le flux de travail que j'utilise.Fondamentalement, je suis d'utilisation de la Ctrl-P Vim plugin, et je l'ai associé le tampon de navigation de la touche Entrée.

De cette façon, je peux appuyer sur Entrer en mode normal, regarde la liste des fichiers ouverts (qui s'affiche dans une petite fenêtre en bas de l'écran), sélectionnez le fichier à modifier et appuyez de nouveau sur Enter.Pour rechercher rapidement par le biais de plusieurs fichiers ouverts, il suffit de taper 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 il devient extrêmement utile lorsque vous commencez à avoir beaucoup de.

Depuis le plugin trie les tampons à l'aide d'un MRU de la commande, vous pouvez appuyez simplement sur Entrée deux fois et passer à la plus récente du fichier que vous modifiez.

Après le plugin est installé, la seule configuration que vous avez besoin est:

nmap <CR> :CtrlPBuffer<CR>

Bien sûr, vous pouvez l'associer à une touche différente, mais je trouve le mappage d'entrée pour être très pratique.

Quand j'ai commencé à utiliser VIM je ne savais pas que les pattes étaient censés être utilisé comme différentes mises en page, tampon et remplit le rôle pour plusieurs de modification du fichier / commutation entre les uns des autres.En effet, au début des onglets ne sont même pas là avant v7.0 et je viens d'ouvrir un VIM dans un terminal onglet (j'ai été en utilisant gnome-terminal pour le moment), et de basculer entre les onglets à l'aide de alt+chiffres, car je pensais à l'aide des commandes comme :tampons, bn et :bp ont été trop pour moi.Lorsque VIM 7.0 a été libéré je trouve que c'est plus facile à manager un lot de fichiers et en marche, mais récemment je viens de réaliser que les zones tampons devraient toujours être la voie à suivre, à moins d'une chose:vous devez le configurer pour le faire fonctionne.

J'ai donc essayé de vim-compagnie aérienne et activé le visuel sur l'onglet du haut-comme tampon bar, mais graphique a avoir un problème avec mon iTerm2, j'ai donc essayé un couple de d'autres et il semble que MBE fonctionne le mieux pour moi.J'ai également réglé maj+h/l en tant que raccourcis, depuis l'origine (le déplacement de la tête/queue de la page en cours) n'est pas très utile pour moi.

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

Il semble être encore plus facile que la gt et gt, et :e est plus facile que :tabnew trop.J'ai trouver :bd n'est pas aussi pratique que :q si (MBE est d'avoir quelques problème avec ça), mais je peux vivre avec tous les fichiers dans la mémoire tampon, je pense.

Vous pouvez être un fou furieux et alias vim pour vim -p en ajoutant dans votre .bashrc:

alias vim="vim -p"

Cela entraînera l'ouverture de plusieurs fichiers à partir du shell dans des onglets, sans avoir à invoquer :tab ball à partir de vim par la suite.

Je vous recommande d'utiliser le plugin

NERDtree

Voici le lien github avec des instructions.

Nerdtree

J'utilise vim-plug en tant que gestionnaire de plugin, mais vous pouvez utiliser Vundle ainsi.

vim-plug

Vundle

si vous êtes sous osx et que vous voulez être en mesure de cliquer sur les onglets, utilisez MouseTerm et SIMBL (prises à partir de ici).Aussi, découvrez ce la discussion à ce sujet.

La plupart des réponses dans ce thread sont à l'aide de la plaine de vim commandes de ce qui est évidemment très bien, mais j'ai pensé que je pourrais fournir un large réponse en utilisant une combinaison de plugins et des fonctions que je trouve particulièrement utile (au moins certains de ces conseils est venu de Gary Bernhardt du fichier de conseils de navigation):

  1. Pour basculer entre les deux dernières dossier de presse <leader> à deux reprises.Je recommande l'attribution <leader> pour la barre d'espace:

    nnoremap <leader><leader> <c-^>
    
  2. Pour se déplaçant rapidement autour d'un projet, la réponse est une correspondance floue solution comme CtrlP.Je la lie <leader>a pour un accès rapide.

  3. Dans le cas où je veux voir une représentation visuelle de la actuellement ouvert tampons-je utiliser le BufExplorer plugin.Simple, mais efficace.

  4. Si je veux parcourir le système de fichiers je voudrais utiliser la ligne de commande ou un utilitaire externe (Quicklsilver, Afred etc.) mais à regarder l'actuel projet de la structure NERD Tree est un classique.Ne pas utiliser ce bien à la place de 2 en tant que votre fichier principal de trouver la méthode.Il va vraiment vous ralentir.J'utilise la liaison <leader>ff.

Ceux-ci devraient être assez pour la recherche et l'ouverture de fichiers.À partir de là, bien sûr, une utilisation horizontale et verticale divise.Concernant les fractionnements-je trouver ces fonctions particulièrement utiles:

  1. Ouvrir de nouvelles divisions dans des zones plus petites quand il n'y a pas assez de place et de les étendre sur la navigation.Reportez-vous ici pour des commentaires sur ce que ceux-ci font exactement:

    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. Déplacer de split à split facilement:

    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top