0

我正在尝试创建一个 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
4

1 回答 1

2

您在寻找文字或符号吗?如果您正在寻找符号(函数、变量、数组...),您可能会发现 ctags 和/或 cscope 更合适。

有关更多信息,请参阅 :help 标签。

但是……你什么都没问,你想从我们这里得到什么?代码批评?

函数的最后一行似乎没用,因为 quickfix 窗口中的每一行都至少包含一次你的单词。它只会在第一行水平移动光标,这是没有用的。

我会使用 :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毕竟这条线可能不是必需的。

我不相信 的输出grep可以完全隐藏在 CLI Vim 中。

于 2013-09-21T05:57:29.270 回答