【发布时间】:2012-05-05 09:23:55
【问题描述】:
我正在尝试映射一个热键以在 Vim 中执行以下操作:
- 匹配当前光标当前标记的c字
- 生成当前项目中所有找到的事件的列表
- 打开一个显示结果的新标签
所以,我有一个使用 CTAGS 的示例在新选项卡中打开变量/函数的声明,如下所示:
map <C-\> :split<CR>:exec("tag ".expand("<cword>"))<CR>
当它点击 CTRL-\ 时,会打开一个新选项卡,其中包含光标所在变量/函数的声明。
我试图映射的命令如下所示:
:lvim /\<\(text_i_want_to_find\)\>/gj *.c
:lw
当我运行此命令时,会打开一个新选项卡,其中显示包含文本 text_i_want_to_find 的所有 .c 文件的列表。我需要修改它来做两件与现在不同的事情:
- 搜索所有扩展名为
.c、.h、.cpp、.mk的文件,而不仅仅是.c,还搜索名为“Makefile”的文件 - 像上面显示的 CTRL-\ 映射一样搜索光标下的 c 字,而不必手动输入文本
text_i_want_to_find
这是我的.vimrc 文件中用于映射的代码。我不完全确定 CTRL-/ 是否可以映射,所以还有一个问题需要我解决。
map <C-/> :split<CR>:lvim /\<\(.expand("<cword>")\)\>/gj *.c *.h *.cpp *.mk Makefile
有人对修复这个 Vim 映射有任何提示吗?
编辑:
查看提供给我的答案后,这是我的代码的最终版本:
command! -nargs=1 SearchAll execute " grep -srnw --binary-files=without-match --exclude={*~,tags} --exclude-dir=.svn . -e " . expand("<args>") . " " <bar> cwindow
map <C-g> :SearchAll <cword><CR>
我将它映射到 CTRL+g。我也可以像冒号命令一样调用它:
:SearchAll my_text_to_search_for
希望这对其他人也有帮助!
【问题讨论】: