我开始使用从this vim tip到lvimgrep
的映射来搜索文件下的当前单词:
map <F4> :execute "lvimgrep /" . expand("<cword>") . "/j **" <Bar> lw<CR>
我意识到我想在命令实际执行之前编辑文件glob路径或搜索模式。
例如:当光标在html文件中的javascript变量上时,按F4
只搜索html文件中的变量。如果它形成命令并让我在执行之前编辑它会更好。
删除尾随<CR>
按原样输出代码 - 命令窗口显示:
:execute "lvimgrep /" . expand("<cword>") . "/j **" <Bar> lw
但这很难编辑。我实际上喜欢映射显示:
:lvimgrep /theword/j *.js //---- cursor waiting here
我已尽力而为但不知道如何去做 - 而vimscript并不容易。
PS:可能是Editable vimgrep string in command line
的欺骗行为 PPS :最终映射(我使用过<leader>*
):
nnoremap <expr> <leader>* ":lvimgrep /" . expand("<cword>") . "/j **/*." . expand("%:e") . "\|lopen"
答案 0 :(得分:2)
您可以使用:help map-expr
代替:execute
。这将计算表达式,然后将结果用作映射的右侧:
:nnoremap <expr> <F4> ":lvimgrep /" . expand("<cword>") . "/j **"
或者,您可以使用<C-r><C-w>
插入当前单词:
:nnoremap <F4> :lvimgrep /<C-r><C-w>/j **
补充提示:You should use :noremap
;它使映射不受重映射和递归的影响。