在Vim中使用AStyle

我试图让AStyle与Vim一起工作,以便我可以使用“=”键重新缩进代码的各个部分。 例如,我希望能够使用AStyle而不是内置的压头来输入我惯用的=iB来缩进当前的代码块。

我尝试在我的vimrc中设置equalprg = astyle,但问题是astyle只接收选定的块,但认为它正在接收整个文件。 因此,当我尝试仅缩进嵌套类时,缩进是完全关闭的。

我知道我可以一次对整个文件进行重新格式化,但是有没有办法在vim中使用astyle,它完全复制了vim的原始格式化行为(所有my = -movement命令都可以工作 - 并且使用astyle的autoindent的加分点以及!)?


除非有一个具有部分文件格式选项的AStyle版本,否则在运行AStyle后需要应用额外的缩进。

我不确定你如何用动作做到这一点。

通过视觉选择,您可以从第一行抓取缩进,将代码传递给equalprg,然后将缩进添加到所有行:

vnoremap = <Esc>`<dwgv=`<<C-v>`>I<C-r>"<Esc>

打破它:

vnoremap -- so we can use = for equalprg
<Esc>`< -- stop selecting and go to beginning of line at beginning of selection
dw -- grab the initial indentation
gv= -- reselect and indent as normal
`<<C-v>`> -- block select the selection
I<C-r>"<Esc> -- insert the initial indentation

也许你可以做类似的动作?


它只适用于具有部分文件格式选项的格式化程序,如idbrii已经指出的那样。 格式化程序的一个例子是clang格式。

一种将vim集成到vim的方法是使用vim-autoformat。 使用这个插件,你可以viB ,然后按你自定义的格式键,如<F3> 。 这将只会格式化所选的内部代码块。

链接地址: http://www.djcxy.com/p/4159.html

上一篇: Using AStyle in Vim

下一篇: What performance can I expect from Int32 and Int64?