2013-02-24 43 views

回答

5

您可以使用Vim內置的global工具。它將輸出窗口底部所有匹配的行。這方面的一個例子是::克/搜索關鍵詞/輸入

你可能會發現,打開行號,如果它是不是已經到獲得其中的文件你比賽的透視是。要做到這一點的命令是:集數輸入

附加信息可以通過運行該命令中找到:幫助全球輸入

編輯:

如果你想將結果重定向到它自己的窗口,vim.wikia.com建議使用命令序列

:redir @a   redirect output to register a 
:g//    repeat last global command 
:redir END  end redirection 
:new    create new window 
:put! a   paste register a into new window 

你可以很容易地編寫腳本作爲vimscript function。我高度如果你從來沒有見過它來學習如何正確編寫Vim函數,建議你查看Steve Losh - Learn Vimscript the Hard Way教程。

+0

這非常有幫助。謝謝。無論如何,它只會顯示結果? – domlao 2013-02-24 05:02:22

+0

@krakat我已更新附加信息。讓我知道如果這不符合你的問題。 – 2013-02-24 05:24:49

2

除了小李的回答:g[lobal]命令,這裏有幾個選擇:

  • :il[ist] foo列表包含foo所有行,不看像當前緩衝區的意見(使用:il[ist]!如果你想匹配評論)。

    當顯示列表,你可以打<CR>讓它消失或打:發出Ex命令::5<CR>跳轉到第5行,3行之後:5t3副本5號線等。

    請注意,該列表是瞬態的:如果您想再次查看該列表,則必須重新發出該命令。

    用法:

    :il foo<CR> 
    :23<CR> 
    
  • :vim[grep] bar % | cw[indow]填充在當前緩衝區含有bar的所有行quickfix窗口。

    閱讀:h quickfix知道如何使用它。很快,打<CR>跳轉到一個結果,:cn跳轉到下一個結果,:cp跳到前面的結果...

    用法:

    :vim bar % | cw<CR> 
    (navigate to the result you want in the quickfix window 
    with arrows, `jk`, line numbers, search…) 
    <CR> 
    

    您還可以使用:grep bar % | cw[indow]它使用系統的,而不是grep Vim的內部類似於grep的方法。

    請注意,直到下一個:vim:grep:make或任何操縱錯誤列表的命令,quickfix窗口的內容纔會更改。這意味着你可以隱藏quickfix窗口並用相同的列表重新打開它。

+1

好的答案!我真的認爲'g'代表grep ...我已經更新了我的答案來說全球。 – 2013-02-24 23:46:01

4

還有另一種可能性與:g

說你想獲得的所有線路在當前文件與字foo做到這一點:

,您可以鍵入:

qzq:g/foo/y Z請輸入

執行上述行後,這些行會存儲在您的寄存器z中。你可以將"zp粘貼到某處,或者稍後處理。

什麼做什麼前不久:

qzq:清除z寄存器

:g/foo/y Z:猛拉所有匹配的行註冊z

+0

'qzq'是一個很好的黑客。 – romainl 2013-02-25 07:43:29

0

搜索,比如說, 「QQQ」 後,我只看到含有所述字符串的行用命令:

:v//d 

「v 「匹配行不包含先前的搜索(」//「)和」d「刪除它們。這是一個負面的「g」。
我得到一個乾淨的看法,只有我想要的線條。如果我對某個特定的感興趣,我會用「mm」來標記它。
當我完成查看它們時,使用「u」撤銷刪除並取回我的文件(不必忘記)。
之後,我在「n」之間移動這些行,或者用「m」移動到標記的行。

相關問題