2010-12-08 33 views
10

Avec de nombreux tampons ouverts, je besoin d'un moyen simple pour rechercher tous les tampons pour une regex et naviguer dans le résultat de la recherche (liste rapide?)Recherche/Grep dans tous les tampons VI

Je sais que je peux commande :bufdo, et est facile à rechercher et à remplacer par %s, mais je ne trouve pas un moyen de faire une simple recherche, puis naviguer dans les résultats.

J'ai trouvé des plugins pour cela (par exemple, buffergrep), mais je serais surpris si cette tâche simple n'est pas supportée nativement avec un truc de vim .. est-ce?

+0

double possible de [Comment rechercher les tampons ouverts dans Vim?] (Http://stackoverflow.com/questions/11975174/how-do-i-search-the- open-buffers-in-vim) –

Répondre

4

:grep & co. va remplir le tampon QuickFix, ce qui permet une navigation rapide parmi les résultats.

+2

Pouvez-vous utiliser cela pour grep dans BUFFERS et non fichiers –

+3

@Samer Abukhait: La documentation suggère ': call setflflist ([]) | bufdo grepadd! quelque chose% ', avec un travail supplémentaire pour gérer plus de cas. – ephemient

+0

grepadd! semble faire l'affaire. La documentation n'est pas assez claire pour que je puisse la mapper sur le comportement désiré ou répondre à des questions comme (quels sont les éléments de syntaxe? Et/ou puis-je utiliser autre chose que "%"?). Mais dans tous les cas, j'ai maintenant un moyen de faire ce que je voulais, et pour cela je vous remercie! –

2

"J'ai trouvé des plugins pour cela (par exemple, buffergrep), mais je serais surpris si cette tâche simple n'est pas supportée nativement avec un truc vim .. est-ce?"

Pas que je sache. Et l'existence de plusieurs plugins essayant d'offrir cette fonctionnalité tend à le confirmer. . .

Quels plugins avez-vous essayé et qu'est-ce qui leur a manqué?

http://www.vim.org/scripts/script.php?script_id=2545 
http://www.vim.org/scripts/script.php?script_id=2255 

Aussi, juste pour être sûr, vous êtes au courant de vimgrep, non? Vimgrep est une commande interne qui charge les fichiers dans des tampons et fait greps sur les tampons, avec des résultats dans la fenêtre quickfix. Je n'ai pas confirmé, mais je suppose que si un fichier recherché est déjà ouvert dans un tampon que Vimgrep ne le recharge pas, du moins pas s'il a un drapeau 'nomodifié'. Si c'est le cas, une façon d'utiliser Vimgrep pour un grepping rapide et facile serait de créer simplement une liste de fichiers pour Vimgrep en utilisant la sortie de la commande: buffers.

3

de :help grepadd

:grepa[dd][!] [arguments] 
      Just like ":grep", but instead of making a new list of 
      errors the matches are appended to the current list. 
      Example: 
       :call setqflist([]) 
       :bufdo grepadd! something % 
      The first command makes a new error list which is 
      empty. The second command executes "grepadd" for each 
      listed buffer. Note the use of ! to avoid that 
      ":grepadd" jumps to the first error, which is not 
      allowed with |:bufdo|. 
      An example that uses the argument list and avoids 
      errors for files without matches: 
           :silent argdo try 
        \ | grepadd! something % 
        \ | catch /E480:/ 
        \ | endtry"