2017-02-20 36 views
0

我想將變量設置爲使用exuberant Ctags在特定文件夾中生成的所有gotags文件的集合。 (gotags不過是tags文件重命名)。vimrc如何調用unix find?

我在我的.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文件的下一個目錄樹。

回答

2

發明新的語法在實踐中往往不能很好地工作。使用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)), ',') 
+0

非常感謝您的回答,但不知何故,只有標籤來自'/ usr/local/go/src/gotags'的文件僅被檢查,其他標籤文件作爲'findfiles'列出的結果不被搜索。 – weima

+0

我檢查了':findfile()'的幫助,發現我們需要使用通配符「*」進行向下搜索。所以應該使用'findfile('gotags','/ home/vimal/gowork/src/*',-1)' – weima

+0

謝謝@Sato :) – weima