用Vim中的空格替换Tab

Dav*_*.ca 341 vi vim

我想将tab转换为gVim中的空格.我向我添加了以下行_vimrc:

set tabstop=2
Run Code Online (Sandbox Code Playgroud)

它可以在两个空格处停止,但它仍然看起来像是插入了一个tab键(我尝试使用h键来计算空格).

我不知道如何将gVim转换为空格?

ʞɔı*_*ɔıu 807

根据其他答案开启expandtab后,根据新设置转换现有文件的极为方便的方法是:

:retab
Run Code Online (Sandbox Code Playgroud)

它将适用于当前缓冲区.

  • 作为Vim,它也适用于视觉选择区域:) (8认同)
  • 感谢您教我新事物。在看到您的评论之前,我已经使用了乏味的`:%s / \ t / / g`多年。 (2认同)

D.S*_*ley 365

IIRC,类似于:

set tabstop=2 shiftwidth=2 expandtab
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.如果您已经有选项卡,那么请使用一个漂亮的全局RE来跟进它,以用双倍空格替换它们.

  • 或者你可以使用:retab (359认同)
  • 哎呀,那是":%!expand -t2" (23认同)
  • 这一切意味着什么,[很好地在Vim维基上解释](http://vim.wikia.com/wiki/Converting_tabs_to_spaces). (3认同)

Han*_*Gay 105

尝试

set expandtab
Run Code Online (Sandbox Code Playgroud)

用于软标签.

要修复预先存在的标签:

:%s/\t/  /g
Run Code Online (Sandbox Code Playgroud)

我使用了两个空格,因为你已经将tabstop设置为2个空格.

  • 而不是做替换,你可以做上面尼克建议的 - 即重新开始.这将保留所有现有选项卡,作为tabstop中设置的空格数. (8认同)
  • 修复将插入两个空格,其中只需要一个空格. (5认同)

ser*_*rup 57

这对我有用:

你可以看到首先这样做的标签:

:set list
Run Code Online (Sandbox Code Playgroud)

然后可以替换制表符然后执行以下操作:

:set expandtab
Run Code Online (Sandbox Code Playgroud)

然后

:retab
Run Code Online (Sandbox Code Playgroud)

现在所有选项卡都已替换为空格,然后您可以返回到正常查看,如下所示:

:set nolist
Run Code Online (Sandbox Code Playgroud)

  • `:set list` 非常漂亮。 (5认同)

Jak*_*ers 43

gg=G 将重新注册整个文件,并删除大多数(如果不是所有)我从同事那里得到的文件标签.

  • @ jes516`gg`将光标移到缓冲区的开头。“ =”是格式,并接受移动命令。“ G”将光标移动到缓冲区的末尾,因此它告诉vim从当前缓冲区的开头到结尾进行格式化。 (2认同)

小智 40

将以下行添加到.vimrc中

set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>
Run Code Online (Sandbox Code Playgroud)

在vim中打开文件并按F2键.选项卡将转换为4个空格,文件将自动保存.

  • 值得注意的是,“q”也会关闭文件的当前缓冲区。这可能是所希望的,也可能不是所希望的。 (2认同)

pk.*_*pk. 14

如果你想保持\t等于8个空格,那么考虑设置:

   set softtabstop=2 tabstop=8 shiftwidth=2
Run Code Online (Sandbox Code Playgroud)

这样每次<TAB>按下会有两个空格,但\t代码中的实际值仍将被视为8个字符.


Wil*_*ich 10

这让它为我工作:

:set tabstop=2 shiftwidth=2 expandtab | retab
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供有关 :retab 的提示。我将其添加到已接受的答案中,这样就没有人会错过这一重要部分:-) (3认同)