7
votes

Vim: commande "saut à fichier" simple?

Quel est le moyen le plus simple de "sauter dans un fichier quelque part dans mon arbre source par nom"? Par exemple, si je travaille avec "libfoo" contenant libfoo / foo / foo.py , j'aimerais pouvoir passer à foo.py de n'importe où dans libfoo / ** [0].

Peut-être un moyen de le faire avec un fichier de balises?

[0]: c'est, libfoo / et ses sous-répertoires.

vim

0 commentaires

7 Réponses :


5
votes

Consultez Command-t , Fuzzyfinder ou FuzzyFinder_textmate

Personnellement, je trouve que Command-t a la meilleure interface utilisateur, mais Fuf_textmate est préférable pour vous rendre rapidement au bon endroit dans de très grands projets (c'est pourquoi je l'utilise après avoir essayé tous les 3)

Notez que FuzzyFinder_textmate est non resté par son auteur d'origine, vous devrez peut-être avoir à fouiller l'onglet Réseau GH pour trouver qui a la branche la plus à jour. Notez également que c'est un peu une douleur à installer.


6 commentaires

J'utilise déjà FuzzyFinder_textmate déjà pour sa balise sautant ... mais c'est un peu ennuyeux d'utiliser fichier car, si je suis dans libfoo / bar / baz / , alors j'ai Pour taper \ f ../../../**/ foo.py .


Peut-être qu'il y a un moyen de la configurer afin de pouvoir utiliser un répertoire à la racine?


Pour autant que je sache, le Textmate Fuzzy Finder ne propose que des noms de fichiers et commencera toujours à l'endroit que vous avez ouvert VIM (qui peut réellement être une douleur parfois). Peut-être que vous utilisez FUZZY FINDER?


Euh, oui - peut-être que je suis juste à l'aide de FuzzyFinder.


La principale différence entre les deux est pour le FUF, vous devez traverser tout le chemin (c'est-à-dire à travers FUF_TM, il conviendra simplement par nom de fichier au lieu d'un chemin complet jusqu'à ce que vous commenciez à utiliser / s. alors FPY va le correspondre, mais si c'est trop général, vous pourriez faire FOO / FPY pour réduire votre recherche


CTRLP est un autre pour la liste. Semblable aux autres dans cette réponse, mais pure vimscript.



17
votes

Ajouter ** code> est à vous Vim séparé par des virgules Vim PATH CODE> VARIABLE (NON SYSTÈME PATH) et si vous êtes dans un parent Dir du projet Utilisez:

:find foo.py


7 commentaires

Vous avez voté, Cause Recherche est définitivement plus simple, puis à installer et à configurer un plugin.


HRM, qui ne semble pas faire ce que je veux faire ce que je veux ... si mon CWD est libfoo / , trouver foo.py ne fonctionne pas. Éventuellement : trouver n'est pas récursif?


Qu'est-ce que: Set Path vous dit? Le mien est chemin =., ** , , lequel je pense est la valeur par défaut. Cela me recute définitivement pour moi. : Trouvez un mot de passe dans / trouver / etc / passwd.


En effet, on dirait que Set Chemin =., ** , est dans mon ~ / .viCrc, que j'ai enfreint de quelque part il y a 10 ans. Ajouter cela et : trouver est récursif.


Ah, il y a le problème: mon manquant est manquant ** . Etrange, bien que - je cours surtout un stock 7.2, et si ** est par défaut, alors je ne sais pas pourquoi je ne l'aurais pas (le mien est ., / USR / inclure , ).


Par défaut est "., / Usr / include ," sur UNIX, comme indiqué sur : chemin d'aide


Je suppose que c'est la peine d'apporter la même chose, VIMRC pendant des années - vous oubliez les valeurs par défaut. Mise à jour de la réponse.



3
votes

Vous pouvez utiliser l'onglet Vim achèvement des noms de fichiers en conjonces avec le ** de l'expansion de répertoire récursive.

E.g. Type: : e libfoo / ** / foo.py et frappez l'onglet. Cela recherchera dans le répertoire Libfoo pour trouver un fichier correspondant. S'il y a plus d'une correspondance, vous pouvez les parcourir avec la touche TAB. Lorsque vous trouvez celui que vous voulez, appuyez sur Entrée pour terminer la commande et modifier le fichier.

Pour plus d'informations sur le ** correspondant à : H Starstar . Il nécessite une version de VIM compilée avec l'option + path_extra.

Si vous avez déjà édité le fichier une fois que vous pouvez également rechercher les tampons de noms de nom partiel avec la commande : b . par exemple. : B FOO.PY sera étendu à un nom tampon qui a 'foo.py' n'importe où dans celui-ci. N.b. Il correspond à l'ensemble du chemin, donc : B FOO correspondrait à tous les tampons avec des fichiers du répertoire Libfoo.


1 commentaires

upéted parce que c'est simple, comme demandé dans la question et utilise simplement une fonctionnalité Vim intégrée



-1
votes
map <S-F12> :execute "!start explorer \"" . expand( "%:p:h" ) . "\""<CR>
starts up an explorer window in the directory of the file you are using

1 commentaires

Désolé, je ne suis pas sûr de voir comment cela est pertinent pour la question ...



0
votes

Vérifiez ceci:

https://github.com/zhchang/quick_file

Caractéristiques uniques: 1. Vous n'avez pas besoin de savoir où est-ce exactement, tant que c'est dans l'un des sous-Dir. 2. Vous n'avez pas à vous rappeler le nom complet, les fragments feront 3. Cela ira à la plupart des matchs peu profonds, mais avec plus de fragments du trajet fourni, il correspondra plus profondément.


0 commentaires

1
votes

ctrlp.vim

chemin complet FUZZY fichier , tampon , mrU , tag , ... Finder pour Vim.

  • Écrit dans Pure Vimscript pour Macvim, Gvim et Vim 7.0 +.
  • Prise en charge complète du REGEXP de Vim en tant que modèles de recherche.
  • Surveillance de fichiers la plus intégrée (MRU).
  • Finder root de projet intégré.
  • Ouvrez plusieurs fichiers à la fois.
  • Créez de nouveaux fichiers et répertoires.
  • extensible.

    Vous pouvez le trouver chez https://github.com/ctrlpvim/ctrlp.vim .


0 commentaires

2
votes

CTAGS --extra = f. code> strong> crée des balises avec le même nom que les fichiers pointant sur la première ligne:

:tag file_na


0 commentaires