2016-09-14 82 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)用于视觉和命令行模式。