我正在尝试映射一个热键以在 Vim 中执行以下操作:
- 匹配光标当前标记的当前 c-word
- 生成当前项目中所有找到的事件的列表
- 打开一个显示结果的新选项卡
因此,我有一个使用 CTAGS 的示例在新选项卡中打开变量/函数的声明,如下所示:
map <C-\> :split<CR>:exec("tag ".expand("<cword>"))<CR>
当它点击CTRL-\时,将打开一个新选项卡,其中包含光标所在的变量/函数的声明。
我试图映射的命令如下所示:
:lvim /\<\(text_i_want_to_find\)\>/gj *.c
:lw
当我运行此命令时,会打开一个新选项卡,其中显示包含 text 的所有.c
文件的列表text_i_want_to_find
。我需要修改它以做与现在不同的两件事:
- 搜索所有扩展名为
.c
,.h
,.cpp
,.mk
, 而不是 , 的.c
文件,并搜索名为“Makefile”的文件 - 像上面显示的那样搜索光标下的 c-word CTRL,\而不是手动输入文本
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
希望这对其他人也有帮助!