2010-07-25 6 views
5

Existe-t-il un bon gestionnaire de projet/session pour vim? Une session (ou projet) est une liste de fichiers nommés, par ex. "Bitonic_sort" pourrait identifier les fichiers "~/A/bitonic_sort.sk", "~/B/bitonic_sort.smt2", etc.Quel est le meilleur tampon/gestionnaire de session (compatible avec Linux) pour Vim?

(raison) J'ai un projet où je dois modifier les fichiers de différents les emplacements, et il est trop fastidieux de les ouvrir manuellement chaque fois que je reprends le travail. (Donc, il semble que des choses comme nerdtree élevé à cette question sœur, Favorite (G)Vim plugins/scripts?, ne fonctionnera pas). J'ai également besoin de sessions séparées (c'est-à-dire de listes de fichiers) pour différents projets, pas seulement une liste de documents récente.

Une fois que tous les documents ont été chargés en tant que tampons, toute amélioration de la commutation entre eux est un plus (par exemple, commencez à taper un nom et les documents correspondants sont affichés). Merci d'avance.

Répondre

7

Vim dispose d'un gestionnaire de session intégré. Pour enregistrer votre session en cours, utilisez:

:mks session1.vim 

Ceci crée un script Vim nommé session1.vim, qui rétablira votre fichier ouvert si vous la source ou commencez Vim comme ceci:

vim -S session1.vim 

Pour écraser vos sessions enregistrées, utilisez :mks! your_saved_session.vim. Combiner avec une carte de clé personnalisée et ce sera la solution. Pour plus d'informations sur la session Vim, lisez :help :mks. Vim a aussi vues gestionnaire qui est assez similaire. En savoir plus à partir de: :help :mkview

Pour basculer entre les tampons, vous pouvez utiliser FuzzyFinder; mais je préfère cette carte clé:

nmap <C-tab> :bn<CR> 
imap <C-tab> <ESC>:bn<CR>i 

Ajouter à .vimrc et je peux utiliser Ctrl + Tab pour basculer entre les tampons comme les onglets de Firefox. J'espère que cette aide.

+0

Super, merci! Je travaille avec un lot de fichiers, et FuzzyFinder semble génial! Une chose mineure - la complétion du nom de fichier de vim est utile, mais je voudrais juste sauvegarder la session active à la sortie ... savez-vous comment faire cela? – gatoatigrado

+2

Ouais, c'est une bonne idée. Après avoir googlé un peu, je trouve ce script Vim [vim-session] (http://github.com/xolox/vim-session). Il vient avec des fonctionnalités supplémentaires dont je n'ai pas besoin, j'ai donc emprunté du code et j'ai trouvé ceci: 'au VimLeavePre * si v: this_session! = '' | exec "mks!" v: this_session | endif' .Ajouter ceci à votre .vimrc et votre session actuelle sera sauvegardée automatiquement lors de la sortie. – tungd

+0

Wow, vous êtes génial, merci beaucoup !!! – gatoatigrado

2

Je ne sais pas exactement ce que vous demandez ... mais si vous voulez activer l'onglet d'achèvement lorsque l'ouverture de fichiers dans vim, ajoutez à votre ~/.vimrc:

" Auto-complete file names after <TAB> like bash does. 
set wildmode=longest,list 
set wildignore=.svn,CVS,*.swp 

En outre, jetez un oeil à screen. Sur la page de l'homme:

Lorsque écran est appelée, elle crée une seule fenêtre avec un shell (ou la commande spécifiée) et obtient alors sur votre chemin afin que vous puissiez utiliser le programme vous le feriez normalement. Puis, à tout moment, vous pouvez créer de nouvelles fenêtres (plein écran) avec d'autres programmes (y compris plus de shells), tuer fenêtres existantes, afficher une liste de fenêtres, activer et désactiver la journalisation de sortie, copier-et- coller du texte entre Windows, afficher l'historique de défilement, basculer entre les fenêtres de la manière que vous souhaitez, etc Toutes les fenêtres exécuter leurs programmes complètement indépendants les uns des autres. Les programmes continuent de s'exécuter lorsque leur fenêtre n'est actuellement pas visible et même lorsque la session de l'écran entier est détachée du terminal de l'utilisateur. Lorsqu'un programme se termine, l'écran (par défaut) tue la fenêtre qui le contenait. Si cette fenêtre était au premier plan, l'affichage passe à la fenêtre précédente; s'il n'en reste aucun, l'écran se ferme.

Il est à peu près comme avoir plusieurs xterms ouvert, sauf contrairement xterms graphiques que vous pouvez accéder à votre session d'écran si vous accédez à votre machine à distance (par exemple par exécution de ssh à elle). Vous pouvez laisser plusieurs instances différentes de vim dans des écrans séparés avec tous les fichiers que vous voulez ouvrir, et ne jamais les quitter.

La configuration de base que j'utilise est une fenêtre vim, une fenêtre de compilation et une fenêtre de test/débogage.


Et puisque nous parlons vim, consultez ce post: Post your Vim config. Beaucoup de coups secs frais et des trucs épatant là-dedans.

+0

Je veux un concept de « projet »/« session » (liste nommée de fichiers , par exemple "projet de tri bitonique"), éventuellement avec d'autres listes/sélecteurs de documents. S'il vous plaît clarifier la question si quelque chose n'est pas clair. L'écran est une bonne idée, je vais devoir apprendre ça un jour :) – gatoatigrado

+0

Oh, mec, comme les IDE. Je ne sais pas comment faire ça. –

Questions connexes