web-dev-qa-db-fra.com

Ouverture de fichiers dans Vim à l'aide de la recherche floue

Je cherche un moyen pour que Vim ait la possibilité d'ouvrir un fichier en effectuant une recherche floue sur son nom.

Fondamentalement, je veux pouvoir définir un projet une fois, puis avoir un raccourci qui me donnera un endroit pour taper un nom de fichier et qui correspondra si des lettres correspondent.

Ce type de fonctionnalité existe dans la plupart des éditeurs que j'ai vus, mais pour la vie de moi, je ne comprends pas comment faire pour que Vim le fasse.

Notez que je recherche quelque chose qui ne sera pas me demande d'avoir une idée de l'endroit où se trouve un fichier dans mon répertoire. Je veux juste pouvoir l'ouvrir par le nom de fichier, quel que soit le répertoire dans lequel il se trouve.

Merci

53
Edan Maor

Il existe deux excellents plugins vim pour cela.

ctrlp :

  • Écrit en VimL pur
  • Fonctionne à peu près partout
  • Prend en charge les moteurs de recherche personnalisés pour de meilleures performances
  • Plugin de recherche floue le plus populaire pour Vim

Commande-T :

  • Écrit en C, VimL et Ruby
  • Rapide hors de la boîte
  • A besoin +Ruby support dans Vim
  • Recommande la version Vim> = 7.3

MODIFIER:

J'utilise CtrlP avec ag comme Finder personnalisé et c'est incroyablement rapide (même sur des projets massifs) et très portable.

Un exemple d'utilisation de ag avec CtrlP :

if executable('ag')
  " Use Ag over Grep
  set grepprg=ag\ --nogroup\ --nocolor

  " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
  let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
endif
58
Chris Knadler

CommandT pour Vim est très similaire à celui de TextMate. Mon flux de travail est maintenant

1) Ouvrez MacVim

2): cd ~/mon_projet

3) (J'ai ce mappage comme décrit dans l'aide à l'installation)

4) C-v le fichier pour ouvrir le fichier dans une division verticale, ou CR pour ouvrir une nouvelle division horizontale.

5) pour fermer le split, utilisez: bd (buffer delete)

6) pour passer à un autre tampon, j'ai installé BufferExplorer, alors il suffit de\be et de sélectionner

Ce flux de travail est comparable à TextMate, il faut un certain temps pour s'y habituer, et j'apprends toujours.

3
Alex Le
2
Zsolt Botykai

Solution basique

Ajoutez simplement ceci à votre .vimrc

nnoremap <C-p> :find ./**/*

Appuyer sur Ctrl + p vous permettra désormais de trouver des fichiers flous dans votre répertoire de travail actuel et ses sous-répertoires. Utilisez la touche de tabulation pour parcourir les options.

Solution connexe

Pour ceux qui veulent le garder basique, c'est-à-dire sans plugins, ce divertissant vidéo montre une autre façon de trouver des fichiers flous dans vim.

Ils utilisent réellement

set path+=**
set wildmenu

dans leur .vimrc pour rechercher des fichiers dans les sous-répertoires actuels.

Par exemple, avec :find *Murph suivi de l'onglet, je trouverais les fichiers KilianMurphy2012Why.R et KilianMurphy2014ROLE.R dans le sous-répertoire code que je peux parcourir avec la touche de tabulation. La première solution ci-dessus présente l'avantage que le chemin relatif est également indiqué.

Notez que votre répertoire de travail actuel importera et que les autres fichiers sur votre chemin (:set path?) sera également trouvé avec ce type de solution. L'option wildmenu ajoute des informations visuelles et n'est pas essentielle.

Pour un raccourci clavier, ajoutez

nnoremap <C-p> :find *

à votre .vimrc. Vous pourrez maintenant rechercher rapidement des fichiers dans votre projet/répertoire actuel avec Ctrl + p en mode normal.

0
Niels