Vim 製表符和空格

Vim 製表符和空格

我希望我的 vim 縮排如下運作:如果我有

▷   ▷   int function(int x,▒int y, int z) {

然後我按 Enter 鍵,我想得到以下內容:

▷   ▷   int function(int x,
▷   ▷   _____________int y, int z) {

其中「▷」是製表符,「_」是空格。

換句話說,我想使用製表符,但如果我在不添加縮排等級的地方有換行符,那麼非縮進行應該與空格對齊。

這允許我使用製表符進行縮進,但保留非縮排等級的格式,以便即使製表符大小發生變更也保留格式。

到目前為止,我還沒有找到使用 Vim 實現這一點的方法。 Preserveindent 和 copyindent 不是我要找的。他們尊重expandtab,而我只想使用expandtab進行縮進,使用空格進行對齊。

答案1

根據Vim 維基, 這智慧標籤插件將執行此操作。我自己沒試過。

答案2

目前,這在 vim 中看起來不可行。您可以使用製表符或空格,但不能同時使用兩者。這並不奇怪,因為製表符上的空格時間對語言非常敏感。想想看:在 python 中,你會如何對待:

x = fn(abc, 'def', {
                       ghi: jkl,
                       mno: pqr,
                   })

您應該在某個時候返回標籤頁嗎?這將是理想的,但非常上下文相關,並且不能真正跨語言工作。另一個有趣的例子,在 haskell 中:

data Something = Something { flag1 :: Bool
                           , flag2 :: Bool }
               deriving (Eq, Ord, Show)

祝一切順利。

不幸的是,我得出的結論是,這種功能需要特定於語言的擴展。不過,如果您知道這樣做的好方法,我很想聽聽。

相關內容