14

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

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

4

3 回答 3

8

这与这里所问的相反

是的你可以!如果你有“隐藏”选项,你可以试试这个。

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

以下是这些命令的作用:

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

您仍然必须设置您的tabstop,softtabstopshiftwidthto 4,但它看起来感觉就是这样2!但是,当您编写文件时,它确实是4.

如果你想关闭隐藏,你可以做以下两件事之一:

  1. 删除隐藏规则:syntax clear spaces
  2. 允许隐藏的文本在光标下展开:set concealcursor=
于 2012-12-19T03:45:14.277 回答
4

该帮助有一个关于不同选项卡宽度的类似用例的示例,请参阅:help retab-example

将其调整为将空间减半/加倍:

:autocmd BufReadPost,BufWritePost  * %substitute/^\( \+\)\1/\1/e
:autocmd BufWritePre               * %substitute/^ \+/&&/e
于 2012-12-13T07:36:38.417 回答
0

如果他使用真正的空格而不是制表符(听起来像),不,您不能让 vim 在有 4 个空格的情况下显示 2 个空格。但是,您可以告诉 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

应该把它转换回来。

于 2012-12-12T22:17:08.113 回答