簡體   English   中英

如何讓vim對齊三元組?:運算符很好嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM