2011-07-27 62 views
9

我喜歡用三元編寫代碼:?操作是這樣的:如何讓vim對齊三元?:運算符很好?

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

如何配置VIM使按下回車鍵時,在已經輸入createNewItem()縮進的下一行,使光標在同一列作爲最後的?,以便我可以繼續輸入: processInput(input);

我試着看cinoptions-values設置,但我沒有看到任何相關的。

回答

1

roughly similiar question啓發我行使我的Vimscript福並創建了一個小腳本做這個工作:

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切換壓痕插件的加載。它似乎工作得很好!

1

你可以做到這一點,至少部分地添加括號:

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

這隻能如果你打破錶達成三行:我平時 做,但我不得不承認,你的格式看起來非常好,並且在表達很短的情況下可讀。

在過去,我發現vim郵件列表對於這類問題很有幫助 。它曾經被Google門戶網站門控,所以你可以諮詢 它就好像它是一個羣體一樣;我不確定目前的狀態爲 (因爲我無法從工作中訪問Google羣組)。