将选项卡replace为VIM中的空格

我想将tab转换为gvim中的空格。 我将下面的代码添加到我的_vimrc中:

set tabstop=2 

它的工作停在2个空格,但它仍然看起来像插入一个制表键(我试图用h键来计算空间后)。 不知道该怎么做才能使gvim转换为空格的选项卡?

IIRC,像这样:

 set tabstop=2 shiftwidth=2 expandtab 

应该做的伎俩。 如果你已经有了标签,那么用一个好的全局RE来跟着它,用双空格replace它们。

根据其他答案获得expandtab后,根据您的新设置转换现有文件的非常方便的方法是:

 :retab 

它将在当前缓冲区上工作。

尝试

 set expandtab 

为软标签。

修复预先存在的选项卡:

 :%s/\t/ /g 

我用了两个空格,因为你已经把你的tabstop设置为2个空格。

将以下行添加到.vimrc中

 set expandtab set tabstop=4 set shiftwidth=4 map <F2> :retab <CR> :wq! <CR> 

在vim中打开一个文件,然后按F2。这些标签将被转换为4个空格,文件将被自动保存。

gg=G将重新整理整个文件,并删除大部分(如果不是全部)我从同事的文件中获取的选项卡。

这对我工作:

您可以首先看到选项卡:

 :set list 

那么可以更换标签,然后做到这一点:

 :set expandtab 

然后

 :retab 

现在所有的标签都被replace为空格,然后你可以像这样回到正常的观看状态:

 :set nolist 

如果你想保持你的等于8个空格然后考虑设置:

  set softtabstop=2 tabstop=8 shiftwidth=2 

这会给你两个空格每个<TAB>按下,但实际上你的代码仍然会被视为8个字符。

首先在你的文件中search标签:/ ^ I:set expandtab:retab

将工作。

这篇文章有一个优秀的vimrc脚本,用于处理tab +空格,并在它们之间进行转换。

提供这些命令:

Space2Tab仅在缩进中将空格转换为制表符。

Tab2Space只能在缩进中将制表符转换为空格。

RetabIndent执行Space2Tab(如果设置了“expandtab”)或Tab2Space(否则)。

每个命令都接受一个参数,该参数指定选项卡列中的空格数。 默认情况下,使用“tabstop”设置。

来源: http : //vim.wikia.com/wiki/Super_retab#Script

 " Return indent (all whitespace at start of a line), converted from " tabs to spaces if what = 1, or from spaces to tabs otherwise. " When converting to tabs, result has no redundant spaces. function! Indenting(indent, what, cols) let spccol = repeat(' ', a:cols) let result = substitute(a:indent, spccol, '\t', 'g') let result = substitute(result, ' \+\ze\t', '', 'g') if a:what == 1 let result = substitute(result, '\t', spccol, 'g') endif return result endfunction " Convert whitespace used for indenting (before first non-whitespace). " what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces). " cols = string with number of columns per tab, or empty to use 'tabstop'. " The cursor position is restored, but the cursor will be in a different " column when the number of characters in the indent of the line is changed. function! IndentConvert(line1, line2, what, cols) let savepos = getpos('.') let cols = empty(a:cols) ? &tabstop : a:cols execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e' call histdel('search', -1) call setpos('.', savepos) endfunction command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>) command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>) command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>) 

当我第一次寻找解决scheme时,这帮助我多了一些答案。