2013-06-27 89 views
0

我似乎想起了一個vim插件,它可以讓您基本上執行「:g/pattern/p」,然後提示您選擇一個。有誰知道這個插件?或者它是一個內置函數?Vim:查看頁面上的所有實例並選擇一個

基本上,我想執行一次搜索,查看當前頁面上的所有實例(甚至打開緩衝區),然後能夠選擇要去哪個實例。

謝謝!

編輯:

我希望它居然拿我行號的時候我讓我選擇,我想這是一個相當簡單的解決方案。我很確定我已經看到了一個插件,但我不記得它是什麼。有什麼想法嗎?

PS。謝謝所有正在回答的人。他們是很好的答案。

回答

3

您可以使用:vim[grep]:gr[ep]

:vim foo % | cw 

:vim foo % | cw

:help quickfix

如果你想要一個插件,你必須搜索vim.org。

+0

我很確定我看過一個插件提出這個列表,然後讓你做出選擇,並把你帶到有問題的路線。我似乎無法找到它或記住其他任何事情。 –

+0

爲什麼你需要一個插件?你可以用內置的命令來完成你所要求的任何事情。一旦打開quickfix列表,您可以導航它,並在結果上點擊「」以跳轉到該列表,等等。閱讀我提供給你的文檔部分。 – romainl

2

這可能會讓你關閉。它不是一個交互式菜單,但它告訴你的行號的比賽

:g/<regex>/# 

#告訴全球打印的行號。看看:h :number#:number的同義詞)

+0

+1這是我會回答的... –

+0

它實際上顯示了沒有#的行號。我想要的是我可以選擇的有序選擇。我知道有一個插件會提示你選擇,我只是不記得它是什麼... –

+0

@MrA礦不顯示行號。我猜你已經在你的vimrc中有':set number',這也似乎告訴你行號 – FDinoff

0
:g/regex/p 

:g執行:p默認情況下,因此它可以被忽略;尾隨斜線也可以刪除:

:g/regex 

注意:g跳轉到該文件中最後出現的,所以你就可以執行N/(正常模式),跳轉到第N次出現。或者,如果有多場比賽,而且你不想指望你想要哪一場,那麼你至少可以用LGLgg:L跳到它的這一行。

如果你不使用:set number但想在:p輸出線號,追加nu[mber]#爲@FDinoff提示:

:g/regex/nu 
:g/regex/# 
2

你可以通過:vimgrep命令

:vimgrep/regex/ % 

%代表當前緩衝區的文件名填充結果到quickfix窗口。注意:緩衝區必須是文件而不是臨時緩衝區。

然後使用quickfix命令(如:cnext和​​)來移動列表。或者通過:copen打開清單並按<cr>跳到比賽。

可以:vimgrep任意數量的文件:

  • 所有*.c文件如:vimgrep/regex/ *.c
  • 使用**可搜索深層目錄,例如:vimgrep/regex/ **/*.c

您還可以通過:vimgrep/regex/ ##vimgrep與參數列表一起使用。

如需更多幫助,請參見:

:h :vimgrep 
:h quickfix 
:h c_% 
:h arglist 
0

可以確認一個又一個變化中的所有打開的緩衝區:

:bufdo %s;<pattern>;<replace>;c | update 

:bufdo經過所有緩衝區。 c是確認所有更改的標誌。 update寫入當前允許進入下一個緩衝區的緩衝區。

+1

這似乎沒有涉及到這個問題呢? –

相關問題