我希望我的 vim 缩进工作如下:如果我有
▷ ▷ int function(int x,▒int y, int z) {
然后我按下回车键,我想要得到以下结果:
▷ ▷ 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)
祝一切顺利。
不幸的是,我得出的结论是,这种功能需要特定于语言的扩展。不过,如果您知道一个好的方法来实现这一点,我很乐意听听。