如何使现有选项卡在vim中显示为4个空格?

时间:2014-08-02 12:42:01

标签: vim

我在git存储库中工作,它的所有缩进都是制表符,但我喜欢在空格中工作(每个缩进4个空格)。我不想只是对标签进行文本替换,因为那样我最终会在我的差异中出现可怕的混乱。相反,我希望vim将标签显示为,就好像它们是空格一样。

我在阅读完这个问题后创建了这个问题:

Redefine tab as 4 spaces

答案之一(来自Alan Haggai Alavi)说:

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces

这似乎表明,运行:set expandtab会使标签显示为空格。显然情况并非如此。我怎样才能实现我追求的目标?我正在使用vim 7.4

4 个答案:

答案 0 :(得分:1)

从命令模式,只需调用

:retab

这会将现有的标签转换为空格(假设您拥有:set expandtab已经拥有.vimrc)。另外,由于您已将tabstop值设置为4个空格,:retab将使用该值并将现有标签替换为4个空格。

有关详细信息,请查看内置帮助

:help retab

如果您想要做更多漂亮的事情,请查看以下链接:http://vim.wikia.com/wiki/Super_retab

启用expandtab不会将现有标签转换为空格,只会展开新的TAB字符插入。

答案 1 :(得分:1)

除非:set list并且listchars具有自定义值,否则选项卡与tabstop空格之间没有区别,外观,。在这里你有和没有:set list

的缓冲区
<tab>foo
<space><space><space><space><space><space><space><space>bar

tabs vs spaces

所以......你在询问“外观”或功能吗?

答案 2 :(得分:0)

这些是我使用的设置:

set tabstop=4
set shiftwidth=4
set noexpandtab

答案 3 :(得分:0)

gg=G

您的设置正确无误。您只需要重新缩进文档。