Historique récent des fichiers dans Vim?

132

Je voudrais accéder aux fichiers récents que j'avais ouverts puis fermés dans GVim. J'ouvre et ferme fréquemment GVim. Je souhaite également accéder aux fichiers récents des sessions précédentes.

GVim stocke-t-il des fichiers récents quelque part comme Word et de nombreuses autres applications de bureau? Comment y accéder?

Mert Nuhoglu
la source
Similaire à la question: stackoverflow.com/questions/309723/…
malgca

Réponses:

229

Au moins le terminal vim stocke les dix fichiers précédents ~/.viminfodans la section des marques de fichiers. Vous pouvez utiliser '0, '1, '2, ... '9sauter parmi eux.

(Probablement utile uniquement pour '0revenir au dernier fichier que vous étiez en train de modifier, à moins que votre mémoire ne soit plus forte que la mienne.)

Vous pouvez également utiliser la :browse oldfilescommande pour obtenir un menu avec des nombres.

sarnold
la source
2
Si vous souhaitez utiliser 0- 9comme marques de navigation, ne les marquez pas manuellement
yuan
16
utilisez :browse oldget file-list. et entrez qpour choisir le fichier à modifier.
songhir
5
:e #<1ouvre le dernier fichier, voir :h c_#<.
Hotschke
: bro ol fonctionne .. mais vous devez taper beaucoup de touches .. d'abord pour obtenir une liste de fichiers, puis appuyer sur q, puis pour sélectionner un nombre. Je pense que le plugin MRU mentionné ci-dessous est bien meilleur: stackoverflow.com/a/3171323/4752883 vous devez appuyer sur <leader> f, puis recherchez le fichier avec hjkl ou d'autres touches / recherchez le nom du fichier. Appuyez ensuite sur o, entrée, t ou v pour ouvrir rapidement le fichier sous le curseur.
alpha_989
J'ai récupéré un fichier que j'ai supprimé par erreur en rmutilisant la méthode susmentionnée.
tandem le
55

La meilleure façon dont j'utilise est

:browse oldfiles

Le moyen le plus simple sur vim.

Andor Kesselman
la source
1
Agréable! J'ai mappé cette expression comme "nmap bo: parcourir oldfiles <CR>" (sans les guillemets) dans mon ~ / .vimrc. Il suffit de taper ce mappage (bo) en mode normal pour exécuter cette commande
Victoria Stuart
22

Réponse très tardive ici ... expliquant la réponse @sarnolds - Vous pouvez afficher l'historique des fichiers avec la commande oldfiles @see: h oldfiles ou: h viminfo

:oldfiles 

De plus, vous pouvez avoir une gestion fine des fichiers avec des vues et des sessions ... @see: h mkview et: h mksession pour les détails ...

Eddie B
la source
4
Il est utile de savoir comment ouvrir réellement un fichier après avoir connu son numéro dans la liste des fichiers :oldfiles. On peut le faire de manière interactive en utilisant la :browsecommande, comme expliqué par @sarnold mais il est également possible de le faire manuellement en utilisant :e #<Noù N est un nombre de la oldfilesliste.
Krzysztof Adamski
11

Il existe un couteau suisse du plugin CtrlP de changement de fichier , qui fait également partie de la distribution janus . Il a une :CtrlPMRUcommande avec une recherche intelligente parmi les fichiers récemment utilisés.

Remarque: CtrlP conserve sa propre liste des fichiers les plus récents utilisés dans g:ctrlp_cache_dir."mru/cache.txt". Il ne réutilise pas viminfo ( set viminfo?) qui contient une liste de marques de fichier. Ceci est utile si vous souhaitez effacer cette liste.

Alexey
la source
1
L'interface CtrlP n'est pas intuitive pour les utilisateurs de vim? Cela ne vaut pas la peine d'apprendre l'interface compliquée pour faire une chose simple comme pour trouver le fichier MRU = ~ / regexp / (facilement fait avec perl / grep regexp ~ / _viminfo).
mosh
Ouais .. J'ai essayé de comprendre comment utiliser Ctrlp, mais MRU semble être beaucoup plus facile à utiliser, si vous avez un simple ensemble de fichiers ( stackoverflow.com/a/3171323/4752883 ). Dans MRU, vous pouvez également effectuer une recherche d'expression régulière VIM pour trouver le fichier dont vous avez besoin ...
alpha_989
9

Utilisez :bro olpuis appuyez sur le numéro qui correspond au fichier que vous souhaitez ouvrir.

Nenchev
la source
5

Le plugin CtrlP vous permet de rechercher dans vos fichiers récemment utilisés ainsi que dans les fichiers du répertoire actuel avec cette commande:

nnoremap <c-p> :CtrlPMixed<cr>

Cela vous évite d'avoir à gérer les commandes Vim intégrées et le plugin MRU, qui ne vous permettent pas de faire une recherche de fichier floue, ce qui est essentiel lorsque vous travaillez sur des projets plus volumineux.

Andy Ray
la source
Pour ceux qui résistent à la reconfiguration fonctionnelle par défaut de Ctrl-P: vous pouvez ouvrir Ctrl-P normalement et utiliser Ctrl-F ou Ctrl-B pour basculer entre les modes (MRU étant l'un d'entre eux)
Gustavo Matias
2

Comme on le voit dans les commentaires ici (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), votre fichier est probablement toujours ouvert dans un tampon:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Par exemple, vous pouvez rouvrir le troisième tampon dans un nouvel onglet (utilisez plutôt: e si vous n'utilisez pas d'onglets):

:tabnew +3buf
user886333
la source
1
Oui, cela fonctionne. Mais le travail d'un rédacteur est sûrement de rendre les choses faciles? Si vous devez émettre une commande, identifier visuellement quelque chose, mémoriser un identifiant, puis émettre une autre commande qui représente une véritable perte de temps pour l'utilisateur. Votre réponse est correcte, et je ne veux pas dire d'offense, mais cela ne fait pas partie des fonctionnalités les plus meurtrières de Vim!
artfulrobot
J'ai eu le même problème. avez-vous essayé buffexplorer? Il combine ls et: tabnew + Nbuf. Vous pouvez maintenant ouvrir la liste des tampons, et l'ouvrir dans un nouvel onglet etc. avec une seule touche (o, t, v) etcc.
alpha_989
2

Vous pourrez peut-être accéder à la liste à partir de la ligne de commande avec:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

Explication:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

Vous pourriez avoir un alias bash si vous l'utilisez régulièrement

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"
Alexx Roche
la source
2

Ajouter mes 2 cents ici parce que fzf n'a pas été mentionné plus tôt, ce qui est un outil
tellement merveilleux: fzf.vim a une :Historycommande qui vous permet de rechercher les fichiers utilisés les plus récents de manière floue et de rechercher pendant que vous tapez .
Je personnalise le comportement (par défaut) de cette commande en ne laissant pas fzf réorganiser la liste des résultats de la recherche pour la meilleure correspondance: je veux que l'ordre de tous les noms de fichiers correspondants reste dans l'ordre dans lequel ces fichiers ont été utilisés pour la dernière fois.
Pour accomplir cette personnalisation, j'ai ajouté ce qui suit dans mon .vimrc pour remplacer la Historycommande par défaut définie par le plugin fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})
Emile Vrijdags
la source
1

Un autre plugin qui vous permet de choisir un fichier dans la liste des derniers modifiés est staritfy . Il remplace votre écran de démarrage par une liste des fichiers les plus récemment modifiés. Vous pouvez toujours ouvrir cette page plus tard en utilisant la :Startifycommande.

Krzysztof Adamski
la source
1
Impossible même d'installer startify - besoin de plus de documents sur l'installation et l'utilisation de base. Utilisation de MRU, car il était facile à installer et à utiliser.
mosh
1

:ls pour lister les fichiers récents avec le numéro de tampon dans la colonne de gauche.

Alors fais :b{buffer-number}pour y sauter.

Exemple: :lsaffiche la liste des fichiers. Je veux passer au troisième-dernier fichier que j'ai visité. :b3me conduira là-bas.

Pour une recherche plus rapide, mappez :lsvers quelque chose, par exemple <Leader>.dans votre fichier .vimrc.

Bryan Perez
la source
1

Vous pouvez également revenir en arrière avec ctrl+ O.

IvanDi
la source