VIM - 将正常模式功能转换为命令模式功能

时间:2012-10-30 18:31:22

标签: regex vim grep vi

美好的一天,

我有一个简单的函数我已经映射到 CTRL + L 我在正常模式下使用它来搜索单词或变量的项目中的所有实例:

" 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

通过这种方式,我有效地获得了一个简短而简单的“在所有文件中查找”#34;功能所以我不必一直输入冗长的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 个答案:

答案 0 :(得分:6)

command! -nargs=1 MySearchFunction execute " grep -srnw --binary-files=without-match --exclude=*~ --exclude-dir=.svn  . -e " . expand("<args>") . " " <bar> cwindow
map <C-l> :MySearchFunction <cword><CR>

我可能会建议查看ack和Ack.vim。