2016-09-14 2 views
3

Ich installierte clang-format-3.8 über apt-get. Jetzt versuche ich es in gVim zu verwenden, aber es funktioniert nicht. Ich überprüft und clang-Format-3.8 existiert im Ordner /usr/share/vim/addons/syntax.Clang-Format funktioniert nicht unter gVim

Aber wenn ich :pyf /usr/share/vim/addons/syntax/clang-format-3.8.py in meinem Vim Befehlszeile eingeben, gibt sie:

E319: Sorry, the command is not available in this version.

Ich benutze gVim 7.4 unter Ubuntu 16.04.

+0

Vim in Ubuntu ist mit Python 3 kompiliert und nicht mit Python 2. Sie müssen Ihren eigenen vim mit Python 2 kompilieren, um das Plug-In zu bekommen – Danh

Antwort

3

Die Vim-Binärdatei mit Ubuntu ausgeliefert 16.04 mit Python kompiliert 3. Die Vim Addons von Klirren-Format, das von Python geschrieben 2.

Sie müssen entweder:

  • Ihr eigenes Addon schreiben von Python 3
  • Stellen Sie sich Ihren eigenen vim mit Python 2, das ist der einfachste Weg

die Anweisungen vim bauen mit Python kann durch Google gefunden werden.

+0

Ich erwarte, dass ich nicht der Einzige bin, der dieses Problem hat. Ich möchte mit py2 kompilieren (ich bin mir ziemlich sicher, dass dies zu neuen Konflikten mit anderen Plugins führen wird), gibt es irgendwelche Addons für Python 3? Ich kann keine Arbeit finden – Jonas

+0

Überprüfen Sie zuerst Ihren vimrc. In meinem Fall gibt es keinen Konflikt, wenn ich zu Python 2 wechsele. Leider, afaik, gibt es noch kein Add-On. Mach es dir selbst – Danh

7

Dahn Antwort ist richtig, dass die Vim Binärdatei, die Schiffe mit Ubuntu 16.04 mit Python kompilieren 3 anstatt Python 2. clang-format-3.8.py Skript im Ubuntu 16.04 clang-format-3.8 Paket mit Python ist nicht kompatibel 3.

Doch die jüngste clang-format.pytut Arbeit mit Python 3. Sie können es hier:

https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.py

ich glaube, es war nur eine Frage der Klammern um diesetzenAnweisungen.

Speichern Sie diese Datei irgendwo auf Ihrem Computer wie /usr/local/share/vim/addons/syntax/.

Dieses Skript verwendet clang-format als Binär-Namen, so dass Sie das clang-format Paket installieren werden soll, die den clang-format Befehl als symbolischer Link auf clang-format-3.8 installiert.

Da Vim ist jetzt ein Python 3 Skript laden, ersetzen Sie Ihre :pyf (nicht verfügbar) Befehl mit :py3f:

:py3f /usr/local/share/vim/addons/syntax/clang-format.py

+0

Danke für deine Antwort. Ich habe 'clang-format' über apt-get installiert. Es hat eine 'clang-format.py' Datei in meinem gewählten Pfad erstellt:'/usr/share/vim/addons/syntax'. Ich habe es mit dem aus dem Link überschrieben und habe es auf gvim mit ': pyf3/usr/share/vim/addons/syntax/clang-format.py' versucht. Es hat nicht funktioniert und gab mir die Meldung 'Kein Editor-Befehl ...'. Was habe ich falsch gemacht? – Jonas

+0

Mein Fehler. Es sollte ': py3f', nicht': pyf3' sein. Bearbeiten meiner Antwort, um dies zu reflektieren. – suncho

+0

Seien Sie auch vorsichtig bei der Entscheidung, etwas unter '/ usr' außerhalb von'/usr/local' zu speichern/zu installieren: http://www.linuxfromscratch.org/blfs/view/svn/introduction/position.html Wenn Sie es in '/ usr' außerhalb von'/usr/local' speichern, könnte Ihr frisch heruntergeladenes 'clang-format.py' beim Upgrade von der Distribution überschrieben werden. – suncho

2

Ich löste das Problem anders eine Kombination aus bash und vim Kommandos.

Zuerst installierte ich clang-format Paket

# apt-get install clang-format-3.5 

(ich wählen Version 3.5, aber Sie können einen anderen)

Zweitens, Test wählen, ob clang-format ist

$ clang-format-3.5 -style=Google test.cpp 

Dann arbeiten, laufen vim

$ vim test.cpp 

vim einen externen Befehl laufen zu lassen und drucken Ausgabe ist in Strompuffer

:r ! clang-format-3.5 -style=Google % 

(mehr Details über externe Befehle in vim)

Dies wird die Ausgabe von clang-format in den aktuellen Puffer anhängen. Zu ersetzen Strompuffer, der den wünschenswerten Effekt ist, gibt die Linien Ausgabe in

:%! clang-format-3.5 -style=Google % 

(die ersten % bedeutet alle Linie in aktueller Datei)

Sie können diesen Prozess produktiver durch neue Befehle definieren, in vim (mit command) für beide visuelle und Befehlszeilen-Modi.

Verwandte Themen