2014-02-21 71 views
7

Fugitive.vim允許我運行git grep命令;不幸的是,結果沒有存儲在quickfix-list中,所以我需要在:Ggrep之後運行:cw以便有一個可以輕鬆解析的結果列表。讓'git grep'在vim中有效工作

我想鍵入:Ggr "def my_function"代替:

:Ggrep "def my_function" 
:cw 

我怎麼能在我的.vimrc文件中定義這個:Ggr命令?

編輯

一旦:Ggr命令的定義,我可以映射到git grep光標下的單詞,這實在是真棒:

nnoremap <C-F> :Ggr <cword><CR> 
+0

的可能重複[VIM - 在同一行的多個命令(http://stackoverflow.com/questions/3249275/vim-multiple-commands-on-same-線) – Nit

+1

請注意,我將不得不將參數:Ggr傳遞給:Ggrep ...所以它不像在一行中運行兩個命令那麼簡單。 –

+5

':Ggrep'確實填充了'quickfix'列表,但窗口不會自動打開。也許你希望'quickfix'窗口在任何grep調用後打開,'autocmd QuickFixCmdPost * grep * cwindow',如[vim-fugitive FAQ部分]中所建議的那樣(https://github.com/tpope/vim-fugitive#常問問題)。 –

回答

9

這個工作對我來說:

:command -nargs=+ Ggr execute 'silent Ggrep!' <q-args> | cw | redraw! 
+0

太棒了!這對前一個答案是一個改進。 –

+1

你可以補充說,作爲我的回答評論,因爲它只是一個小的調整。許多人會考慮你做錯了什麼。至少記錄這些變化以及爲什麼它們是必要的。 –

9

可以使用<args>符號插入參數給你的自定義命令:

:command -nargs=+ Ggr execute 'Ggrep' <q-args> | cw 

注意:由於:Ggrep命令沒有-bar參數,它不能被鏈接,因此必須使用:execute

+0

這幾乎是完美的:Ggrep命令打開一個需要在cw命令運行前關閉的窗口,所以我必須按關閉它。任何想法如何改善這一點? –

+0

您可以通過'... |來模擬按鍵執行「正常\ 」| cw',或者(可能更簡單)嘗試'... |關閉| cw'。 –

+0

這似乎不起作用,我仍然有按下:Ggrep命令後顯示的「按ENTER鍵入命令繼續」消息。 –