clang-format不能在gVim下工作

时间:2016-09-14 12:08:46

标签: c++ vim clang clang-format

我通过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时,它会返回:

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

我在Ubuntu 16.04下使用gVim 7.4。

4 个答案:

答案 0 :(得分:12)

Dahn的回答是正确的,Ubuntu 16.04附带的Vim二进制文件是用Python 3而不是Python 2编译的.Ubuntu 16.04 module.exports = { // the main entry of our app entry: ['./src/index.js', './src/auth/index.js'], // output configuration output: { path: __dirname + '/build/', publicPath: 'build/', filename: 'build.js' }, module: { loaders: [ // process *.vue files using vue-loader {test: /\.vue$/, loader: 'vue'}, // process *.js files using babel-loader // the exclude pattern is important so that we don't // apply babel transform to all the dependencies! {test: /\.js$/, loader: 'babel', exclude: /node_modules/} ] }, devServer: { headers: {"Access-Control-Allow-Origin": "*"} }, babel: { presets: ['es2015'], plugins: ['transform-runtime'] } } 包中的clang-format-3.8.py脚本不兼容用Python 3。

但最新的clang-format-3.8 确实可以使用Python 3.您可以在此处获取:

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

我认为这只是围绕clang-format.py陈述括起来的问题。

将此文件保存在计算机上的某个位置,例如print

此脚本使用/usr/local/share/vim/addons/syntax/作为二进制名称,因此您需要安装clang-format程序包,该程序包将clang-format命令作为符号链接安装到clang-format }。

由于Vim现在正在加载Python 3脚本,请将clang-format-3.8(不可用)命令替换为:pyf

:py3f

答案 1 :(得分:4)

Ubuntu 16.04附带的Vim二进制文件是用Python 3编译的.cngng格式的vim插件由Python 2编写。

您需要:

  • 使用Python 3编写自己的插件
  • 使用Python 2编译自己的vim,这是最简单的方法

Google可以找到使用Python构建vim的说明。

答案 2 :(得分: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),可以提高此过程的效率。

答案 3 :(得分:1)

除了上述答案外,我还要做其他一些事情。我下载了一个新的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问题。