当我在当前文件中找到该单词时,我需要先输入“/ keyword”,但我看不到所有匹配的行,所以我尝试使用以下命令来做一个快捷方式,但它没有不行,请你帮忙检查一下它失败的原因?
function! FindCurrentFile(pattern)
echo a:pattern
execute ":vimgrep" . a:pattern . " %"
execute ":cw"
endfunction
command! -nargs=1 Fi call FindCurrentFile(<args>)
答案 0 :(得分:3)
顺便说一句,如果您只需要快速浏览匹配项,只需使用
即可:g//print
或
:g//p
(您甚至可以完全忽略p
,因为:print
是:global
命令的默认操作。)
当前缓冲区关闭行号时,:g//p
生成的结果很难快速获取。在这种情况下,使用:g//#
显示与行号匹配的内容。
适用于关键字的另一个技巧是普通模式命令[I
。它显示了当前缓冲区中光标下所有关键字实例的快速概览。请参阅:h [I
。
答案 1 :(得分:2)
<args>
替换为命令参数原样 - 这意味着如果你写:
Fi keyword
命令将运行:
call FindCurrentFile(keyword)
这是错误的 - 因为您要传递字符串"keyword"
,而不是名为keyword
的变量。
你需要的是<q-args>
,它引用了这个论点。
<f-args>
,它引用多个参数并用,
分隔它们。
答案 2 :(得分:2)
尝试将函数中的行更改为:
execute ':vimgrep "' . a:pattern . '" ' . expand("%")