是否可以使 vim 显示具有不同缩进量的前导空格?
Is it possible to make vim display leading spaces with a different amount of indentation?
It appears,令人惊讶的是,更多自主选择的 SO 开发者更喜欢通过制表符而不是空格缩进。有些人提出可以使用制表符缩进和空格对齐的论点。理论上这听起来很酷,但在实践中我怀疑这比任何事情都更痛苦,因为你看不到你拥有哪个角色(除非你喜欢打开那种东西)。
所以我有了一个想法——为什么编辑们不呢?为什么编辑器不应该让您配置要用于缩进的空格数,但 还 这些空格的外观。即:
正常:
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 中,使其成为 看起来好像前导空格比实际少(或多)?
是的,你可以,使用隐藏功能。演示(使用示例文本中的标记和不同的替换字符而不是空格来实现效果):
:syntax match Indent "\%(^\%(__\)*\)\@<=__" conceal cchar=#
:set conceallevel=2 concealcursor=nvic
该模式匹配行首的每一对 __
,并用单个 #
替换(隐藏)每个 #
,有效减少可见缩进。
作为一个纯粹的视觉功能,我觉得它不是很有用,我更喜欢你似乎喜欢的post-打开/预保存解决方案请注意。
It appears,令人惊讶的是,更多自主选择的 SO 开发者更喜欢通过制表符而不是空格缩进。有些人提出可以使用制表符缩进和空格对齐的论点。理论上这听起来很酷,但在实践中我怀疑这比任何事情都更痛苦,因为你看不到你拥有哪个角色(除非你喜欢打开那种东西)。
所以我有了一个想法——为什么编辑们不呢?为什么编辑器不应该让您配置要用于缩进的空格数,但 还 这些空格的外观。即:
正常:
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 中,使其成为 看起来好像前导空格比实际少(或多)?
是的,你可以,使用隐藏功能。演示(使用示例文本中的标记和不同的替换字符而不是空格来实现效果):
:syntax match Indent "\%(^\%(__\)*\)\@<=__" conceal cchar=#
:set conceallevel=2 concealcursor=nvic
该模式匹配行首的每一对 __
,并用单个 #
替换(隐藏)每个 #
,有效减少可见缩进。
作为一个纯粹的视觉功能,我觉得它不是很有用,我更喜欢你似乎喜欢的post-打开/预保存解决方案请注意。