2016-09-14 32 views
3

我通過apt-get安裝了clang-format-3.8。 現在我嘗試在gVim中使用它,但它不起作用。 我檢查了並且在文件夾/usr/share/vim/addons/syntax中存在clang-format-3.8。clang-format不能在gVim下工作

但是,當我在vim的命令行中輸入:pyf /usr/share/vim/addons/syntax/clang-format-3.8.py,它返回:

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

我在Ubuntu 16.04下使用gVim 7.4。

+0

Ubuntu中的Vim是用Python 3而不是Python 2編譯的。你需要用Python 2編譯你自己的vim來獲得插件的工作 – Danh

回答

3

附帶的Ubuntu 16.04 Vim的二進制與Python 3鐺格式的插件是由Python的2

寫入的VIM編輯您需要:

  • 通過編寫自己的插件Python 3中
  • 編譯自己的VIM與Python 2,這是最簡單的方法

打造VIM與Python可以通過谷歌找到的說明。

+0

我希望我不是唯一有這個問題的人,我想用py2進行編譯(我敢肯定這會引發與其他插件的新衝突),Python 3中是否還有其他插件?我找不到任何工作 – Jonas

+0

首先檢查你的vimrc。在我的情況下,切換到Python 2時沒有衝突。不幸的是,afaik還沒有可用的附加組件。自己動手 – Danh

7

Dahn的答案是正確的,附帶的Ubuntu 16.04是使用Python 3而不是Python的2 clang-format-3.8.py腳本在Ubuntu 16.04 clang-format-3.8包編譯的Vim二進制文件沒有與Python 3兼容

但最新clang-format.py的確與Python 3工作,你可以在這裏得到它:

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

我認爲這只是一個把加上括號的事報表。

將此文件保存在您計算機的某個位置,例如/usr/local/share/vim/addons/syntax/

此腳本使用clang-format爲二進制的名字,所以你要安裝的clang-format包,安裝clang-format命令作爲一個符號鏈接clang-format-3.8

因爲Vim中現在載入一個Python腳本3,與:py3f取代你:pyf(不可用)命令:

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

+0

謝謝你的回答。我通過apt-get安裝了'clang-format'。它在我選擇的路徑中創建了一個'clang-format.py'文件:'/ usr/share/vim/addons/syntax'。我用鏈接中的一個覆蓋了它,並用':pyf3/usr/share/vim/addons/syntax/clang-format.py'在gvim上試了一下。它沒有起作用,並給了我一個信息「不是編輯器命令......」。我做錯了什麼? – Jonas

+0

我的錯誤。它應該是':py3f',而不是':pyf3'。編輯我的答案來反映這一點。 – suncho

+0

另外,要小心決定在/ usr/local之外的'/ usr'下保存/安裝任何東西: http://www.linuxfromscratch.org/blfs/view/svn/introduction/position.html 如果您將它保存在'/ usr/local'之外的'/ usr'中,那麼當您升級時,新下載的'clang-format.py'可能會被分發覆蓋。 – suncho

2

我解決了這個問題用不同的bashvim命令的組合。

首先,我安裝了clang-format

# apt-get install clang-format-3.5 

(我選擇的版本3。5但如果clang-format工作

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

然後你可以選擇一個不同的)

其次,測試,運行vim

$ vim test.cpp 

vim允許運行一個外部命令,並打印輸出到目前的緩衝區

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

(有關vim中的外部命令的更多詳細信息,請參閱https://www.linux.com/learn/vim-tips-working-external-commands

這會將clang-format的輸出附加到當前緩衝區中。要替換當前的緩衝區,這是所希望的效果,指定線,以輸出到

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

(第一%裝置在當前文件中的所有行)

可以使該過程更高效通過定義新的命令在vim中(使用command)用於視覺和命令行模式。