vimrc 如何调用unix find?

vimrc how to invoke unix find?

我想将标签变量设置为我使用 exuberant Ctags 在特定文件夹中生成的所有 gotags 文件的集合。 (gotags 只是重命名的 tags 文件)。

我在我的 .vimrc 文件中添加了以下几行。

set tags+=/usr/local/go/src/gotags
set tags+=`find /home/vimal/gowork/src -name gotags`

但它不起作用,我收到以下错误

$ vi ~/.vimrc
Error detected while processing /home/vimal/.vimrc:
line  157:
E518: Unknown option: /home/vimal/gowork/src
Press ENTER or type command to continue

如何修复错误并将 tags 变量设置为值:一个目录树下所有 gotags 文件的列表。

发明新语法在实践中往往效果不佳。使用 system() 到 运行 来自 Vim 的外部命令,而不是反引号。 Vim 中的 set 也很奇怪,它不会按照您期望的方式评估 RHS。大多数时候使用 let &option = ...set option=....

要简单得多

无论如何,要回答您的问题,您不需要 运行 find(1),简单的 Vim 函数就足以满足您的需求:

let &tags = join(extend([&tags, '/usr/local/go/src/gotags'],
    \ findfile('gotags', '/home/vimal/gowork/src', -1)), ',')