我正在尝试创建一个VIM函数,允许我在代码库中查找单词 通过使用linux的外部grep函数,然后突出显示该单词的所有出现。
同样,执行的静音假设是抑制外部程序的输出,但它不起作用..
set grepprg=grep\ -rns\ -C\ 1\ "
set grepformat=%f:%l:%m
function! WordFind()
let l:word = input("Find:")
execute 'silent grep ' . l:word . ' .'
:redraw!
:copen
execute '/' . l:word
endfunction
答案 0 :(得分:2)
您在寻找文字或符号吗?如果您正在寻找符号(函数,变量,数组......),您可能会发现ctags和/或cscope更适合。
有关详细信息,请参阅:帮助标记。
但是......你没有问过什么,你对我们有什么要求?代码批评?
你的函数的最后一行似乎没用,因为quickfix窗口中的每一行都包含你的单词至少一次。它只会在第一行水平移动cursir,这是没用的。
我会使用:cwindow而不是:copen。
除此之外,你的功能似乎没问题。
修改
嗯不,不行,最后一行无论如何都行不通。以下修订后的功能适用于我grepprg
和grepformat
设置:
function! WordFind()
let l:word = input("Find:")
execute 'silent grep ' . l:word . ' .'
redraw!
cwindow
wincmd p
let @/ = l:word
endfunction
毕竟,wincmd p
行可能没有必要。
我不相信{V}可以完全隐藏grep
的输出。