
我希望我的 vim 縮排如下運作:如果我有
▷ ▷ int function(int x,▒int y, int z) {
然後我按 Enter 鍵,我想得到以下內容:
▷ ▷ int function(int x,
▷ ▷ _____________int y, int z) {
其中「▷」是製表符,「_」是空格。
換句話說,我想使用製表符,但如果我在不添加縮排等級的地方有換行符,那麼非縮進行應該與空格對齊。
這允許我使用製表符進行縮進,但保留非縮排等級的格式,以便即使製表符大小發生變更也保留格式。
到目前為止,我還沒有找到使用 Vim 實現這一點的方法。 Preserveindent 和 copyindent 不是我要找的。他們尊重expandtab,而我只想使用expandtab進行縮進,使用空格進行對齊。
答案1
答案2
目前,這在 vim 中看起來不可行。您可以使用製表符或空格,但不能同時使用兩者。這並不奇怪,因為製表符上的空格時間對語言非常敏感。想想看:在 python 中,你會如何對待:
x = fn(abc, 'def', {
ghi: jkl,
mno: pqr,
})
您應該在某個時候返回標籤頁嗎?這將是理想的,但非常上下文相關,並且不能真正跨語言工作。另一個有趣的例子,在 haskell 中:
data Something = Something { flag1 :: Bool
, flag2 :: Bool }
deriving (Eq, Ord, Show)
祝一切順利。
不幸的是,我得出的結論是,這種功能需要特定於語言的擴展。不過,如果您知道這樣做的好方法,我很想聽聽。