clang 格式在 gVim 下不工作
clang-format not working under gVim
我通过 apt-get 安装了 clang-format-3.8
。
现在我尝试在 gVim 中使用它,但它不起作用。
我检查过文件夹 /usr/share/vim/addons/syntax
.
中存在 clang-format-3.8
但是当我在 vim 命令行中输入 :pyf /usr/share/vim/addons/syntax/clang-format-3.8.py
时,它 returns:
E319: Sorry, the command is not available in this version
。
我在 Ubuntu 16.04.
下使用 gVim 7.4
Ubuntu 16.04 附带的 Vim 二进制文件是用 Python 编译的 3. clang-format 的 vim 插件是由 Python 编写的 2 .
您需要:
- 通过 Python 3
编写您自己的插件
- 用Python2编译你自己的vim,这是最简单的方法
可以通过 Google 找到使用 Python 构建 vim 的说明。
Dahn 的回答是正确的,Ubuntu 16.04 附带的 Vim 二进制文件是用 Python 3 而不是 Python 2 编译的。clang-format-3.8.py
Ubuntu 16.04 clang-format-3.8
包中的脚本与 Python 3.
不兼容
但最新的 clang-format.py
可以与 Python 一起使用 3. 您可以在这里获取:
https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.py
我认为这只是在 print
语句两边加上括号的问题。
将此文件保存在您计算机上的某个位置,例如 /usr/local/share/vim/addons/syntax/
。
此脚本使用 clang-format
作为二进制名称,因此您需要安装 clang-format
软件包,它将 clang-format
命令安装为指向 [=11= 的符号链接].
由于 Vim 现在正在加载 Python 3 脚本,请将 :pyf
(不可用)命令替换为 :py3f
:
:py3f /usr/local/share/vim/addons/syntax/clang-format.py
我使用 bash
和 vim
命令的组合以不同的方式解决了这个问题。
首先,我安装了 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
)中为可视化和命令行模式定义新命令来提高此过程的效率。
除了上述答案之外,我还要做一些事情。我下载了一个新的 python 文件,并将 clang python 文件中推荐的键映射更改为我的 .vimrc 中的以下内容:
map <C-I> :py3file <path-to-this-file>/clang-format.py<cr>
imap <C-I> <c-o>:py3file <path-to-this-file>/clang-format.py<cr>
这解决了我遇到的 E319 问题。
我通过 apt-get 安装了 clang-format-3.8
。
现在我尝试在 gVim 中使用它,但它不起作用。
我检查过文件夹 /usr/share/vim/addons/syntax
.
但是当我在 vim 命令行中输入 :pyf /usr/share/vim/addons/syntax/clang-format-3.8.py
时,它 returns:
E319: Sorry, the command is not available in this version
。
我在 Ubuntu 16.04.
下使用 gVim 7.4Ubuntu 16.04 附带的 Vim 二进制文件是用 Python 编译的 3. clang-format 的 vim 插件是由 Python 编写的 2 .
您需要:
- 通过 Python 3 编写您自己的插件
- 用Python2编译你自己的vim,这是最简单的方法
可以通过 Google 找到使用 Python 构建 vim 的说明。
Dahn 的回答是正确的,Ubuntu 16.04 附带的 Vim 二进制文件是用 Python 3 而不是 Python 2 编译的。clang-format-3.8.py
Ubuntu 16.04 clang-format-3.8
包中的脚本与 Python 3.
但最新的 clang-format.py
可以与 Python 一起使用 3. 您可以在这里获取:
https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.py
我认为这只是在 print
语句两边加上括号的问题。
将此文件保存在您计算机上的某个位置,例如 /usr/local/share/vim/addons/syntax/
。
此脚本使用 clang-format
作为二进制名称,因此您需要安装 clang-format
软件包,它将 clang-format
命令安装为指向 [=11= 的符号链接].
由于 Vim 现在正在加载 Python 3 脚本,请将 :pyf
(不可用)命令替换为 :py3f
:
:py3f /usr/local/share/vim/addons/syntax/clang-format.py
我使用 bash
和 vim
命令的组合以不同的方式解决了这个问题。
首先,我安装了 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
)中为可视化和命令行模式定义新命令来提高此过程的效率。
除了上述答案之外,我还要做一些事情。我下载了一个新的 python 文件,并将 clang python 文件中推荐的键映射更改为我的 .vimrc 中的以下内容:
map <C-I> :py3file <path-to-this-file>/clang-format.py<cr>
imap <C-I> <c-o>:py3file <path-to-this-file>/clang-format.py<cr>
这解决了我遇到的 E319 问题。