问题 Vim可以显示两个缩进空格,同时在文件中保留四个空格吗?


我想在其他人的项目上工作,他使用4个空格进行缩进。我使用2,我的屏幕不够大,无法轻松编辑4个空间。

我是否可以将Vim配置为显示2个缩进空格,但是将4写入文件?


11378
2017-12-12 21:55


起源



答案:


这与所要求的相反 这里

是的你可以!如果你有“隐藏”选项,你可以尝试一下。

:syntax match spaces /  / conceal cchar= "Don't forget the space after cchar!
:set concealcursor=nvi
:set conceallevel=1

以下是这些命令的作用:

  • 将2个空格的替换字符设置为1个空格
  • 保持文本隐藏在正常,可视和插入模式下的光标下
  • 启用一个字符隐藏文本

你仍然需要设置你的 tabstopsofttabstop 和 shiftwidth 至 4, 但它 容貌 和 感觉 喜欢它 2!但是,当你编写文件时,它确实是 4

如果你想隐瞒隐瞒你可以做以下两件事之一:

  1. 删除隐瞒规则 :syntax clear spaces 要么
  2. 允许隐藏文本在光标下展开 :set concealcursor=

6
2017-12-19 03:45



我还需要添加:在此工作之前设置conceallevel = 1 - timmow
有相反的方法吗?设置2个空格看起来像4个空格? - Uri
@Uri见 stackoverflow.com/questions/14514336/...。请注意,我还没试过。 - Balthamos


答案:


这与所要求的相反 这里

是的你可以!如果你有“隐藏”选项,你可以尝试一下。

:syntax match spaces /  / conceal cchar= "Don't forget the space after cchar!
:set concealcursor=nvi
:set conceallevel=1

以下是这些命令的作用:

  • 将2个空格的替换字符设置为1个空格
  • 保持文本隐藏在正常,可视和插入模式下的光标下
  • 启用一个字符隐藏文本

你仍然需要设置你的 tabstopsofttabstop 和 shiftwidth 至 4, 但它 容貌 和 感觉 喜欢它 2!但是,当你编写文件时,它确实是 4

如果你想隐瞒隐瞒你可以做以下两件事之一:

  1. 删除隐瞒规则 :syntax clear spaces 要么
  2. 允许隐藏文本在光标下展开 :set concealcursor=

6
2017-12-19 03:45



我还需要添加:在此工作之前设置conceallevel = 1 - timmow
有相反的方法吗?设置2个空格看起来像4个空格? - Uri
@Uri见 stackoverflow.com/questions/14514336/...。请注意,我还没试过。 - Balthamos


该帮助有一个不同标签宽度的类似用例的例子,请参阅 :help retab-example

使其适应减半/加倍空间:

:autocmd BufReadPost,BufWritePost  * %substitute/^\( \+\)\1/\1/e
:autocmd BufWritePre               * %substitute/^ \+/&&/e

4
2017-12-13 07:36



那很棒!它是在所有文件上运行,还是仅在当前文件上运行? - Andres Riofrio
同 *, 所有。看到 :help autocmd-patterns 如何影响那个。 - Ingo Karkat


如果他使用真正的空格而不是标签(它听起来像),不,你不能让vim显示2个空格,其中有4个。但是,你可以告诉vim以下命令用标签字符替换所有4空格组,然后将它们显示为2个空格。

:set tabstop=4 ! display a tab as 4 columns
:set shiftwidth=4
:set noexpandtab
:gg=G   ! convert the whole file to tabs
:set tabstop=2 !display a tab as 2 columns
:set shiftwidth=2

当您准备好提交作品时

:set tabstop=4
:set shiftwidth=4
:set expandtab
:%retab

应该将其转换回来。


0
2017-12-12 22:17