Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使vim与三元数对齐?:运算符正确对齐?_C++_Vim_Indentation - Fatal编程技术网

C++ 如何使vim与三元数对齐?:运算符正确对齐?

C++ 如何使vim与三元数对齐?:运算符正确对齐?,c++,vim,indentation,C++,Vim,Indentation,我喜欢使用三元?:运算符编写代码,如下所示: std::string result = input.empty() ? createNewItem() : processInput( input ); 如何配置vim,以便在键入createNewItem()后按Return键时缩进下一行,使光标与上一行位于同一列?以便我可以继续键入:processInput(input) 我尝试查看了cinoptions值设置,但没有看到任

我喜欢使用三元?:运算符编写代码,如下所示:

std::string result = input.empty() ? createNewItem()
                                   : processInput( input );
如何配置vim,以便在键入
createNewItem()
后按Return键时缩进下一行,使光标与上一行
位于同一列?
以便我可以继续键入
:processInput(input)


我尝试查看了
cinoptions值设置,但没有看到任何相关内容。

通过添加括号至少可以部分实现这一点:

std::string result = (input.empty()
                      ? createNewItem()
                      : processInput( input ));
只有将表达式拆分为三行时,此选项才有效:I 通常是这样,但我不得不承认你的格式看起来很好,而且 在表达式较短的情况下可读

在过去,我发现vim邮件列表对这类邮件非常有用 毫无疑问。它过去是谷歌集团的门户,所以你可以咨询 就好像那里有一群人一样;我不确定目前的状况是什么 (因为我无法从工作中访问谷歌群组)

受a的启发,我练习了我的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
中,以切换缩进插件的加载。它似乎工作得很好