2
我有一個簡單的功能我已經映射到CTRL + 大號我在正常模式下使用搜索所有實例一個詞或一個變量的項目:
" Find all occurences in files
map <C-l> :execute " grep -srnw --binary-files=without-match --exclude=*~ --exclude-dir=.svn . -e " . expand("<cword>") . " " <bar> cwindow<CR>
我試圖做一個命令模式功能出這個,所以我可以做這樣的事情:
:mySearchFunction wordToFind
這樣,我可以有效地獲得一個簡短的「在所有文件中查找」功能,因此我不必長時間輸入冗長的grep
函數。我已經嘗試過修改函數. -e " .expand...
之後的代碼,但我不熟悉編寫VI/VIM函數。我熟悉C和BASH腳本,但我無法按預期的方式獲得此功能。
我可以通過這個映射我的一個命令模式功能有一些幫助嗎?
謝謝。
編輯:從@Conner發佈修改後的答案。也不包括CTAGS tags
文件。
command! -nargs=1 SearchAll execute " grep -srnw --binary-files=without-match --exclude={*~,tags} --exclude-dir=.svn . -e " . expand("<args>") . " " <bar> cwindow
map <C-l> :SearchAll <cword><CR>
關閉,但我有兩個問題:1)運行命令後,我得到:E488:尾隨的字符:cwindow^M 2)這隻能找到完全匹配。我會做些什麼來找到部分匹配(即:如果我搜索MY_GLOBAL_VAR,它應該找到MY_GLOBAL_VAR_1,MY_GLOBAL_VAR_2等)。謝謝。 – DevNull
通過編輯爲我的原始問題添加稍微修改後的答案。 +1;公認。 – DevNull
@Dogbert:如果在上述兩行之後有任何附加字符,可能會導致第一個問題。但我相信你應該按照建議移動到[ack](http://betterthangrep.com/why-ack/),那麼你將有一個更好的工具來執行搜索,[Ack.vim](http:// www.vim.org/scripts/script.php?script_id=2572)插件已經實現了你想要的命令。 – mMontu