2012-11-09 50 views
8

我發現了VIM搜索的一個很好的功能,即列出所有搜索結果和相應的行號。管道搜索結果到VIM中的其他選項卡/窗口/緩衝區

例如:

:g/for.*bar/# 

問:是否有一個「簡單」的方法來管/把這個到另一個窗口/標籤/緩衝?

乾杯!

+0

您的意思是「將此列表和數字放入新緩衝區中」? – romainl

+0

@romaini:的確如此。例如進入拆分窗口..要複製的東西,滾動。現在我得到的名單,但當我移動它「消失」。 – ezdazuzena

回答

7

我不知道如何管輸出:g/for.*bar/#到一個新的緩衝區,但我知道如何使用vimgrep獲得很多相同的結果。

嘗試:

vimgrep "for.*bar" % 
:copen 

現在你有所有搜索結果的緩衝區,你可以在它們之間有:cn:cp甚至導航。

看看:help quickfix

+0

看起來像這個,我正在尋找。你可以如此善意地解釋'%'的含義嗎?究竟是什麼意思是'copen',我的意思是,vimgrep的結果在哪裏? – ezdazuzena

+1

@ezdazuzena當然在命令模式下''''''''可以替換爲當前文件的路徑。 – Benj

+0

謝謝。關於我的問題的第二部分,我在這裏找到了答案:http://blogs.gurulabs.com/stuart/archives/2006/08/vimgrep-copen.html – ezdazuzena

2

我不知道如何將直接輸出重定向到一個緩衝,但您可以使用redir將其發送到一個文件:

:redir > file 
:g/for.*bar/# 
:redir END 

或一個寄存器:

:redir @a 
:g/for.*bar/# 
:redir END 

有關更多信息,請參見:help :redir

+0

...然後寄存器可以被放入::put!一個'變成一個新的緩衝區。 –

1

稱讚接受的答案:我做了一個映射,直接打開上次搜索與\ SS(節目搜索)quickfix窗口上,將其添加到您的.vimrc:

" show last search results on the quickfix window at windows bottom 
nnoremap <silent><leader>ss :vimgrep /<C-r>\// % <CR> :botright copen <CR> 

BR

相關問題