在if语句中使用Vim智能选项卡

时间:2013-04-06 00:12:17

标签: vim indentation

我正在使用Vim的SmartTabs插件将C代码与缩进级别的标签结合起来,然后用于对齐的空格。它适用于像

这样的东西
void fn(int a,
________int b) {
--->...

标签为--->,空格为_。但对于像

这样的情况,它似乎没有那么好用
--->if(some_variable >
--->--->some_other_variable) {
--->...

在上面的例子中,Vim在括号内的第二行插入标签。有没有办法可以修改Vim看到的延续线,包括这样的情况,所以我得到:

--->if(some_variable >
--->___some_other_variable) {
--->...

1 个答案:

答案 0 :(得分:0)

如果有缩进样式,根据一个人的喜好和一致的对齐都允许灵活的缩进宽度,你建议的方案就是它。不幸的是,这种风格需要对底层语法有一些基本的了解(例如,some_other_variable是否是行断开的条件(→空格)或条件(→Tab)中的函数调用的一部分),这使得实现它困难的。

我不知道任何现有的Vim插件。 'copyindent''preserveindent'选项有点帮助,但基本上你必须自己用 Space 显式地插入非缩进(并且可能:set list来验证)。

我不知道其他编辑,但大多数其他低级代码编辑器的情况类似。如果没有良好的自动支持,这种优雅的风格将很难获得认可。我很想看到这样的Vim插件。