Vim 制表符和空格

Vim 制表符和空格

我希望我的 vim 缩进工作如下:如果我有

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

然后我按下回车键,我想要得到以下结果:

▷   ▷   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)

祝一切顺利。

不幸的是,我得出的结论是,这种功能需要特定于语言的扩展。不过,如果您知道一个好的方法来实现这一点,我很乐意听听。

相关内容