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



我想做别人的项目,他用4个空格缩进。我使用 2,我的屏幕不够大,无法使用 4 个空格舒适地进行编辑。

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

这与

这里提出的相反。

是的,你可以!如果您有"隐藏"选项,则可以尝试一下。

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

以下是这些命令的作用:

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

你仍然需要设置你的tabstopsofttabstopshiftwidth4,但它看起来感觉都像是2!但是,当您编写文件时,它确实4.

如果要关闭隐藏功能,可以执行以下两项操作之一:

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

帮助有一个不同制表符宽度的类似用例的示例,请参阅 :help retab-example

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

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

如果他使用真正的空格而不是制表符(听起来像),不,你不能让 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

应该把它转换回来。

最新更新