我怎样才能使vim很好地对齐三元运算符?
How can I make vim align the ternary ?: operator nicely?
我喜欢像这样使用三元?:运算符来编写代码:
std::string result = input.empty() ? createNewItem()
: processInput( input );
我如何配置vim,以便在键入createNewItem()
后按回车缩进下一行,使光标与最后一个?
在同一列,以便我可以继续键入: processInput( input );
?
我试着看cinoptions-values
设置,但我没有看到任何相关的
您至少可以通过添加括号来实现这一点:
std::string result = (input.empty()
? createNewItem()
: processInput( input ));
这只适用于将表达式分成三行通常是这样,但我不得不承认你的格式看起来非常好可读,在表达式很短的情况下。
在过去,我发现vim邮件列表对这类邮件非常有帮助的问题。它过去是对谷歌小组封闭的,所以你可以咨询好像那里有一群人;我不确定现在的情况是什么(因为我不能在工作时访问谷歌群组)。
受到一个大致类似的问题的启发,我使用了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
中以切换缩进插件的加载。它似乎工作得很好!
相关文章:
- 三元运算符和 if constexpr
- 在 c++ 中三元运算符中不允许继续(关键字)吗?
- 三元运算符在返回语句中给出意外的结果
- 递归中三元运算符的奇怪行为
- 错误:三元运算符无法在对象中正常工作"cout"
- 是否允许三元运算符在C++中计算两个操作数?
- 有条件地选择带有 decltype() 和三元运算符的类型
- 三元运算符在C++中的意外行为
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 变量值,在三元运算符之后
- 是否可以在C++中使用三元运算符在 if 语句中选择比较运算符?
- c++中的增量和三元运算符优先级
- C++中三元运算符的意外行为
- 用于返回开关的三元运算符
- 替换模板元编程中的三元运算符
- 三元运算符 '?:' 在 4.9.0 之前的 GCC 版本中推断出不正确的类型?
- 在 std::map 上使用三元运算符和 std::更大的附加参数
- "Do nothing"在三元运算符的其他部分?
- 如何确定三元运算符的返回类型?
- 无法使用三元运算符有条件地分配"istream &"?