2010-12-08 7 views
10

Mit vielen Puffer offen, ich brauche eine einfache Möglichkeit, alle Puffer für einen regulären Ausdruck zu suchen und die Suchergebnisse navigieren (kurze Liste?)Suchen/Grep in allen VI Puffer

Ich weiß, ich kann :bufdo Befehl ein, und es ist einfach zu suchen und zu ersetzen mit %s, aber ich kann keinen Weg finden, nur eine einfache Suche zu tun und dann die Ergebnisse zu navigieren.

Ich habe Plugins dafür gefunden (z. B. buffergrep), aber ich bin überrascht, wenn diese einfache Aufgabe nicht nativ mit einem vim-Trick unterstützt wird.

+0

Mögliche Duplikat [Wie ich die offenen Puffer in Vim suchen Sie?] (Http://stackoverflow.com/questions/11975174/how-do-i-search-the- open-buffers-in-vim) –

Antwort

4

:grep & co. füllt den QuickFix-Puffer, der eine schnelle Navigation zwischen den Ergebnissen ermöglicht.

+2

Kannst du das verwenden, um in BUFFERS und nicht in Dateien zu greppen –

+3

@Samer Abukhait: Die Dokumentation schlägt ': call setqflist ([]) | bufdo grepadd! etwas% ', mit etwas zusätzlicher Arbeit, um mehr Fälle zu behandeln. – ephemient

+0

grepadd! scheint den Trick zu machen. Die Dokumentation ist nicht klar genug, um sie dem gewünschten Verhalten zuzuordnen oder Fragen zu beantworten (was sind die Syntaxelemente? Und/oder kann ich etwas anderes als "%" verwenden?). Aber in allen Fällen habe ich jetzt eine Möglichkeit, das zu tun, was ich wollte, und dafür danke ich dir! –

2

"Ich habe Plugins dafür gefunden (z. B. buffergrep), aber ich bin überrascht, wenn diese einfache Aufgabe nicht nativ mit einem vim-Trick unterstützt wird. Ist es das?"

Nicht, dass ich weiß. Das Vorhandensein mehrerer Plugins, die diese Funktionalität anbieten, bestätigt dies. . .

Welche Plugins haben Sie ausprobiert und was fehlt ihnen?

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

Auch, nur um sicher zu stellen, sind Sie vimgrep bewusst, richtig? Vimgrep ist ein interner Befehl, der Dateien in Puffer lädt und Greps in den Puffern ausführt, mit Ergebnissen im Quickfix-Fenster. Ich habe das nicht bestätigt, aber ich nehme an, wenn eine gesuchte Datei bereits in einem Puffer geöffnet ist, lädt Vimgrep sie nicht neu, zumindest nicht, wenn das Flag 'nomodified' gesetzt ist. Wenn dies der Fall ist, könnte Vimgrep zum schnellen und einfachen Buffer-Greppen verwendet werden, indem Sie einfach eine Dateiliste für Vimgrep mit der Ausgabe des Befehls: buffers erstellen.

3

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