是否可以使用不同的缩进量使vim显示前导空格?

是否可以使用不同的缩进量使vim显示前导空格?,vim,Vim,令人惊讶的是,更多的自我选择使得开发人员更喜欢通过制表符而不是空格缩进。有些人提出可以使用制表符缩进,使用空格对齐。理论上这听起来很酷,但在实践中,我怀疑这会比任何事情都更痛苦,因为你看不出你有哪个角色(除非你喜欢打开那种东西) 所以我有了一个想法——为什么编辑们不呢?为什么编辑器不允许您配置要用于缩进的空间数量,以及这些空间的外观。即: 正常: class MyClass: ____def myfun(): ________somevariable = 42 ________volts

令人惊讶的是,更多的自我选择使得开发人员更喜欢通过制表符而不是空格缩进。有些人提出可以使用制表符缩进,使用空格对齐。理论上这听起来很酷,但在实践中,我怀疑这会比任何事情都更痛苦,因为你看不出你有哪个角色(除非你喜欢打开那种东西)

所以我有了一个想法——为什么编辑们不呢?为什么编辑器不允许您配置要用于缩进的空间数量,以及这些空间的外观。即:

正常:

class MyClass:
____def myfun():
________somevariable = 42
________volts        = 40000000 # If you're into that sort of thing. 
________________________________# Not well-formatted Python, though.
前导缩进设置为显示为2个空格:

class MyClass:
__def myfun():
____somevariable = 42
____volts        = 400000000
有可能用vim做这样的事情吗?我知道完全可以编写一个post open/pre save命令来替换内容,这可能会起到相同的作用。。。但我更好奇的是,在vim中,是否有可能使前导空格看起来比实际的要少(或多)?

是的,您可以使用隐藏功能。演示(使用示例文本中的标记和不同的替换字符,而不是空格):


:语法匹配缩进“\%(^\%(\\)*\)\@我建议您阅读
:hts
,它应该已经回答了您的疑问。顺便说一句,我更喜欢空格而不是制表符。
:syntax match Indent "\%(^\%(__\)*\)\@<=__" conceal cchar=#
:set conceallevel=2 concealcursor=nvic