2017-02-20 1 views
0

Ich möchte die Variable Variablen auf den Satz aller gotags Dateien setzen, die ich in bestimmten Ordner (n) mit exuberant Ctags generiert habe. (gotags ist nichts anderes als die tags Datei umbenannt).vimrc wie Unix-Suche aufrufen?

Ich füge folgende Zeilen in meine .vimrc Datei.

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

aber es funktioniert nicht und ich bekomme die folgenden Fehler

$ 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 

, wie kann ich den Fehler und setzen Sie die tags Variable mit dem Wert fix: Liste aller gotags Dateien unter einem Verzeichnisbaum.

Antwort

2

Die Erfindung neuer Syntax tendiert dazu, in der Praxis nicht so gut zu funktionieren. Verwenden Sie system(), um externe Befehle von Vim auszuführen, nicht Backticks. Auch set in Vim ist komisch, es bewertet RHS nicht so, wie Sie es erwarten. Die meiste Zeit ist es viel einfacher zu verwenden let &option = ... anstelle von set option=....

Wie auch immer, Ihre Frage zu beantworten, müssen Sie nicht find(1) dafür laufen, sind schlicht Vim Funktionen genug für das, was Sie wollen:

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

vielen Dank für Ihre Antwort, aber irgendwie nur die Tags von '/ usr/local/go/src/gotags' werden nur geprüft, andere Tag-Dateien, die als Ergebnis von' findfiles' aufgelistet sind, werden nicht durchsucht. – weima

+0

Ich überprüfte Hilfe für ': findfile()' und stellte fest, dass wir Wildcard '*' für die Abwärtssuche verwenden müssen. also sollte 'findfile ('gotags', '/ home/vimal/gowork/src/*', -1) verwenden' – weima

+0

danke @Sato :) – weima