在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>
。 这将只会格式化所选的内部代码块。
上一篇: Using AStyle in Vim