当autoindent打开时,如何阻止vim用制表符替换空格?
一个例子:如果我在行的开头有两个制表符和7个空格,并且tabstop=3
,我按下Enter键,下一行有四个制表符,开头有1个空格,但我不希望...
根本不使用制表符也许是一个好主意.
:set expandtab
如果要将文件中的所有选项卡替换为3个空格(看起来非常相似tabstop=3
):
:%s/^I/ /
(其中,^I
是在TAB字符)
从VIM在线帮助:
'tabstop' 'ts' number (default 8) local to buffer Number of spaces that ain the file counts for. Also see |:retab| command, and 'softtabstop' option. Note: Setting 'tabstop' to any other value than 8 can make your file appear wrong in many places (e.g., when printing it). There are four main ways to use tabs in Vim: 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim will use a mix of tabs and spaces, but typing and will behave like a tab appears every 4 (or 3) characters. 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a |modeline| to set these values when editing the file again. Only works when using Vim to edit the file. 4. Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) for any tabstop setting that people use. It might be nice to have tabs after the first non-blank inserted as spaces if you do this though. Otherwise aligned comments will be wrong when 'tabstop' is changed.
你可以将所有转换TAB
为SPACE
:set et :ret!
或全部转换SPACE
为TAB
:set et! :ret!
我想要的是自动缩进线与前一行具有完全相同的缩进字符.
:help copyindent
"copyindent" "词" 布尔 (缺省关闭); 本地缓冲区; {Vi无此功能}
自动输入新行时,复制现有行缩进的结构.通常,新缩进由一系列制表符重建,后跟所需的空格(除非启用'expandtab',在这种情况下仅使用空格).启用此选项会使新行复制用于在现有行上缩进的任何字符.如果新缩进大于现有行,则以正常方式填充剩余空间.
注意:设置'compatible'时,'copyindent'会被重置. 另见'preserveindent'.
:help preserveindent
"preserveindent" "P1" 布尔 (缺省关闭); 本地缓冲区; {Vi无此功能}
更改当前行的缩进时,尽可能多地保留缩进结构.通常,缩进由一系列制表符替换,后跟所需的空格(除非启用"expandtab",在这种情况下仅使用空格).启用此选项意味着缩进将保留尽可能多的现有字符以进行缩进,并且仅根据需要添加其他选项卡或空格.
注意:多次使用">>"时,生成的缩进是制表符和空格的混合.你可能不喜欢这个.
注意:设置'compatible'时,'preserveindent'会被重置. 另见'copyindent'. 使用:重新使用以清理空白区域.
这是我的一部分.vimrc
:
set autoindent set expandtab set softtabstop=4 set shiftwidth=4
这对我很有用,因为我绝对不希望我的源代码中有标签.从你的问题看来,你确实希望在下一行保留两个标签和七个空格,我不确定是否有办法教vim以适应这种风格.