我正在尝试让 AStyle 与 Vim 一起使用,以便我可以使用“=”键重新缩进各个代码部分。例如,我希望能够键入我常用的 =iB
来使用 AStyle 而不是内置的缩进器来缩进当前的代码块。
我尝试在我的 vimrc 中设置 equalprg=astyle,但问题是 astyle 只接收选定的 block ,但认为它正在接收整个文件。因此,当我尝试只缩进嵌套类时,缩进完全关闭。
我知道我总是可以一次重新格式化整个文件,但是有没有办法在 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 做类似的事情?
我是一名优秀的程序员,十分优秀!