[英]How can I make vim align the ternary ?: operator nicely?
我喜歡使用三元?:運算符編寫代碼:
std::string result = input.empty() ? createNewItem()
: processInput( input );
如何配置vim,以便在鍵入createNewItem()
后按Return鍵縮進下一行,以便光標與最后一行在同一列?
這樣我就可以繼續輸入: processInput( input );
?
我試着查看cinoptions-values
設置,但我沒有看到任何相關內容。
您可以至少部分地添加括號來實現此目的:
std::string result = (input.empty()
? createNewItem()
: processInput( input ));
這只有在你將表達式分成三行時才有效:我通常會這樣做,但我必須承認,在表達式很短的情況下,你的格式看起來非常好看和可讀。
在過去,我發現vim郵件列表對這類問題非常有幫助。 它曾經被門控給谷歌團體,所以你可以像在那里一樣咨詢它; 我不確定當前狀態是什么(因為我無法從工作中訪問Google群組)。
受到一個大致相似的問題的啟發,我運用了我的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
以切換加載縮進插件。 它似乎工作得足夠好!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.