我正在尝试使AStyle与Vim一起使用,以便可以使用“=”键来重新缩进代码的各个部分。例如,我希望能够输入我通常的=iB
来使用AStyle而不是内置的压头来缩进当前代码块。
我尝试在vimrc中仅设置equalprg = astyle,但是问题是astyle仅接收选定的块,但认为它正在接收整个文件。因此,当我尝试仅缩进嵌套类时,缩进完全不可用。
我知道我总是可以立即重新格式化整个文件,但是有一种方法可以在vim中使用astyle来完全复制vim的原始格式化行为(我所有的=
-movement命令都可以正常工作-以及使用astyle进行自动缩进的加分点!)?
最佳答案
除非有一个具有部分文件格式设置选项的AStyle版本,否则您需要在运行AStyle之后应用额外的缩进。
我不确定如何使用 Action 来做到这一点。
通过视觉选择,您可以从第一行开始缩进,将代码传递给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
也许您可以对 Action 做类似的事情?