10
votes

Trouver / Grep dans tous les tampons VI

Avec de nombreux tampons ouverts, j'ai besoin d'un moyen simple de rechercher tous les tampons pour une regex et de naviguer sur le résultat de la recherche (liste rapide?)

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

J'ai trouvé des plugins pour cela (par exemple, buffergrep), mais je serai surpris si cette tâche simple n'est pas prise en charge de manière naturelle avec un tour de vim .. Est-ce?


3 Réponses :


4
votes

: grep & co. va peuplera Le tampon Quickfix, qui permet une navigation rapide parmi les résultats.


4 commentaires

Pouvez-vous utiliser cela vers le grep dans les tampons et non des fichiers


@Samer Abukhait: La documentation suggère : appeléqflist ([]) | Bufto Grepadd! quelque chose% , avec quelques travaux supplémentaires pour gérer plus de cas.


Gregnadd! semble faire l'affaire. La documentation n'est pas assez claire pour que je puisse la cartographier sur le comportement souhaité ou répondez aux questions telles que (quels sont les éléments de syntaxe? Et / ou puis-je utiliser autre chose autre que "%"?). Mais dans tous les cas, j'ai maintenant une façon de faire ce que je voulais, et pour cela, je vous remercie!


Comme pour les tampons déjà chargés, vimgrep au lieu de grep est une meilleure solution.



2
votes

"J'ai trouvé des plugins pour cela (par exemple, buffergrep), mais je serai surpris si cette tâche simple n'est pas prise en charge de manière native avec un tour de vim. Est-ce?"

Pas que je sache. Et l'existence de plusieurs plugins essayant d'offrir cette fonctionnalité a tendance à confirmer cela. . . P>

Quels plugins avez-vous essayé et qu'est-ce qu'ils ont manqué? P>

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


0 commentaires

4
votes

de : Aide GrepADD CODE>

: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"


0 commentaires