如何让vim对齐三元组?:运算符很好吗?

时间:2011-07-27 08:24:13

标签: c++ vim indentation

我喜欢使用三元?:运算符来编写代码:

std::string result = input.empty() ? createNewItem()
                                   : processInput( input );

如何配置vim,以便在键入createNewItem()后按下Return键下一行,以便光标与上一个?在同一列中,这样我就可以继续键入{ {1}}?

我尝试查看: processInput( input );设置,但我没有看到任何相关内容。

2 个答案:

答案 0 :(得分:1)

您可以至少部分地添加括号来实现此目的:

std::string result = (input.empty()
                      ? createNewItem()
                      : processInput( input ));

这只有在你将表达式分为三行时才有效:I 通常这样做,但我必须承认你的格式看起来非常好看 在表达式很短的情况下可读。

过去,我发现vim邮件列表非常有用 问题。它曾经被门控给谷歌团体,所以你可以咨询 它好像是那里的一个团体;我不确定当前的状态 (因为我无法从工作中访问Google网上论坛)。

答案 1 :(得分:1)

roughly similiar question的启发,我锻炼了我的vimscript-fu并创建了一个小脚本来完成这项工作:

if (!exists("*CppIndentDepth"))
    function CppIndentDepth()
        let lineno = v:lnum
        let lastQuestionMark = match(getline(lineno-1), "?[^?]*")
        if lastQuestionMark != -1
            return lastQuestionMark
        endif
        return cindent(lineno)
    endfunction
endif

set indentexpr=CppIndentDepth()

我将此文件保存为vimfiles/indent/after/cpp.vim并将filetype indent on添加到.vimrc以切换加载缩进插件。它似乎工作得很好!