使用astyle(vimrc中的formatprg)进行Vim代码格式化



我正在尝试使用astyle作为Vim中的代码格式化程序。然而,我似乎找不到如何告诉vim哪些选项可以用于astyle。

以下是我的vimrc:

autocmd BufNewFile,BufRead *.cpp set formatprg=astyle

如果在命令行模式下没有选项,astyle将尝试找到一个名为.astyle的选项文件。然而,这在这里似乎不起作用。(即:当我在vim:gqG中格式化时,结果与我从命令行调用astyle时完全不同!(这是我的.astyle选项文件:

--style=allman
--mode=c
--attach-classes              # -xc
--attach-closing-while        # -xV
--indent-classes              # -C
--keep-one-line-blocks        # -O
--keep-one-line-statements    # -o
--align-pointer=name          # -k3                                

所以我试着简单地指定我的vimrc中的选项,就像下面的答案一样:

autocmd BufNewFile,BufRead *.cpp set formatprg=astyle --style=allman --mode=c -xc -xV -C -O -o -k3

保存、来源、重新加载vim entierly:没有变化。这些选择似乎没有生效。当我用gggqG格式化时,结果仍然不是我的选项所要求的。。。有人明白为什么不起作用吗?

(注意:我希望能够使用gq进行格式化,我不介意每次都完整地重新格式化整个文件,这与本问题不同(

编辑:在犯了几个愚蠢的错误之后,我已经逃脱了@romainl评论中建议的所有空格。然而,似乎有一个来自vim的错误,我无法解释:

/bin/bash: -c: line 1: syntax error: unexpected end of file
shell returned 1
E485: Can't read file /tmp/vHXZmnp/3

由于没有人回答,我将分享我的想法。根据评论中给出的建议,我跳过了传递给astyle的选项序列中的所有空格。然而,这导致bash试图解释这些选项,但失败了,并善意地告诉我们:请参阅问题编辑。

可行的解决方案是创建一个系统范围的astyle-options文件,并使用命令行参数传递路径,而不是直接给它选项。(这可能也可以通过项目选项文件来完成,但需要在每个项目的根目录中都有一个选项文件(

将我的选项文件.astylerc放在我的主目录中,这会给出:

autocmd BufNewFile,BufRead *.cpp set formatprg=astyle --options="/home/myusername/.astylerc"

请注意,相对路径不起作用,但可以使用样式文档中提到的$HOME环境变量,使用"伪相对"路径将路径写入选项文件

相关内容

  • 没有找到相关文章

最新更新