在vim中,tab字符的默认显示宽度为8个空格。在终端打开vim,按几次Tab键,很容易超出终端的显示宽度。为了获得良好的编码体验,需要调整制表符的显示宽度。如果不想插入制表符,还需要将制表符换成空格。可以通过配置tabstop选项、softtabstop选项、expandtab选项来修改tab字符的显示和按下Tab键的行为:tabstop选项只修改tab字符的显示宽度,不修改按下的行为Tab键。softtabstop选项修改按Tab键的行为。不要修改制表符的显示宽度。具体行为取决于tabstop选项的值。expandtab选项用指定数量的空格替换插入的制表符。具体的空格数与tabstop选项的值有关。在vim中使用:helptabstop命令查看tabstop选项的说明如下:'tabstop''ts'number(default8)Numberofspacesthatainthefilecountsfor.注意:将'tabstop'设置为8以外的任何其他值会使您的文件在许多地方显示错误(例如,打印时)。可以使用如下命令修改该选项的值为4::settabstop=4tabstop选项可以简写为ts,:settabstop=4命令等同于:setts=4命令。上面的说明提到,将tabstop选项设置为8以外的值可能会导致文件在许多地方显示不正确(例如打印时)。比如设置tabstop选项值为4,在vim中使用制表符进行列对齐,看起来排版正常,保存文件。但是,如果在其他将制表符显示为8个空格的软件上查看此文件,则原本对齐的列可能会出现乱序和错位。在vim帮助文档的各个部分,例如:helpusr_30的制表符和空格部分和:helpusr_25的缩进和制表符部分,反复建议保持tabstop选项值8不变。在:helptabstop命令的描述中,只有当expandtab选项设置为用空格替换tab字符时,建议将tabstop选项修改为其他值。此时在vim的插入模式下,按Tab键,插入的空格不是制表符。保存文件后,用其他软件打开文件,看不到制表符。自然不会因为tab字符的显示宽度不同导致排版异常。注意:tabstop选项只修改vim中tab符的显示宽度,不修改tab符是vim插入的还是插入模式下按tab键时的具体空格数。softtabstop选项在vi??m中,使用:helpsofttabstop命令查看softtabstop选项的说明,如下所示:'softtabstop''sts'number(default0)在执行编辑操作时计算的空格数,例如插入或使用。它“感觉”就像插入了,而实际上混合使用了空格和。当“sts”为零时,此功能关闭。当“sts”为负时,使用“shiftwidth”的值。即softtabstop选项(可以简写为sts)会影响vim在插入模式下按Tab键时实际得到的字符,可能会插入特定数量的空格或插入一个制表符。具体使用时,会受到tabstop选项和expandtab选项的影响。可以用下面的命令修改这个选项的值为4::setsofttabstop=4设置后,当tabstop选项值为8且没有设置expandtab选项时,第一次按Tab键,vim会插入4个空格,而不是插入制表符。之后,再按一次Tab键,vim会删除前面的4个空格,然后插入一个制表符。由于tabstop选项的值为8,在界面上会看到光标继续向前移动4个空白字符,好像又插入了4个空格,但实际上按两次Tab键只是插入了一个tab字符.根据写入文件的字符数和字节数,先按Tab键写入4个空格,即4个字节,第二次按Tab键删除前面写入的4个空格,再写入一个制表符,只有一个字节,写入文件的字节数变少了。虽然从界面上显示了8个空白字符,但这只是一个制表符的显示宽度。可以执行下面的命令让空格和制表符可见,然后测试一下,可以看得很清楚::setlist:setlistchars=tab:>~,space:。另外,softtabstop选项还会影响Backspace键删除多个空格和tab字符删除的连续行为。在上面的场景中,当你第一次按下Tab键时,vim会插入4个空格,你可以使用Backspace键一次性删除这4个空格。即只需按一次退格键即可删除这4个空格。当按两次Tab键,插入一个制表符,再按Backspace键,实际上是用4个空格代替制表符。从界面上看,光标向前移动了4个空白字符,但实际上文件的字节数增加了。比较特别的是,在插入模式下,如果手动输入4个空格,按Backspace键只能删除一个空格。但是手动输入4个空格后,退出插入模式,再进入插入模式,就可以用Backspace键一次性删除这4个空格了。当tabstop选项值为4时,softtabstop选项值为4,且没有设置expandtab选项时,每按一次Tab键,就会插入一个制表符,不会插入空格。上面说了vim建议不要设置这样的设置,以免在其他软件上查看文件时使用Tab键插入制表符进行对齐和缩进时可能出现排版异常。当softtabstop选项的值小于0时,它的实际值将被设置为shiftwidth选项的值。此功能有助于使排版与自动缩进保持一致。稍后将详细解释。注意:softtabstop选项影响的是vim中按Tab键实际得到的字符,并不会改变vim中tab字符的显示宽度,tab字符始终显示为tabstop指定的宽度。当softtabstop选项的值小于tabstop选项的值时,第一次按Tab键会插入对应softtabstop选项值的多个空格。当插入的空格数达到tabstop指定的宽度时,插入的空格将被删除并替换为一个制表符。expandtab选项在vim中使用:helpexpandtab命令查看expandtab选项的说明如下:'expandtab''et'boolean(defaultoff)Insert模式下:使用适当数量的空格插入一个.要在打开'expandtab'时插入一个真正的制表符,使用CTRL-V。即设置expandtab选项后,在插入模式下,按Tab键插入的制表符将被替换为适当数量的空格。如果你真的想插入一个制表符,你需要按下CTRL-V键,然后按下Tab键。你可以使用下面的命令来启用这个选项::setexpandtab设置后,一个制表符将被替换为对应于tabstop选项值的多个空格。例如,如果tabstop选项值为8,则插入制表符将替换为8个空格。需要注意的是,对于softtabstop选项值为4,tabstop选项值为8,未设置expandtab选项的场景,第一次按下Tab键时,插入4个空格,没有tabcharacterisinserted,whichdoesn'thappen用空格替换tab字符的情况并不意味着将softtabstop选项的值设置为4,expandtab选项将根据softtabstop选项的值将tab字符替换为4个空格。当按两次Tab键插入制表符时,expandtab选项仍然根据tabstop选项的值用8个空格替换制表符。注意:设置expandtab选项只能将新插入的制表符替换为特定数量的空格,不会影响文件中已有的制表符。也就是说,文件中任何现有的制表符都将保持不变。配置tab字符自动替换为空格根据前面的描述,如果想自动将插入的tab字符替换为空格,可以在~/.vimrc文件中添加如下配置:"自动缩进时,缩进长度为4setshiftwidth=4"输入Tab字符时,会自动替换为空格集expandtab"softtabstop的值为负数,会使用shiftwidth的值,两者保持一致,方便统一缩进。setsofttabstop=-1这里没有配置tabstop选项值,保持这个值默认8。配置expandtab选项,按Tab键插入的制表符会被8个空格替换。shiftwidth选项上面配置有值为4,设置自动缩进的空格数,同时配置softtabstop选项值为-1,则选项值将等于shiftwidth选项值,也是4。按Tab第一次键,会插入4个空格,与自动缩进的空格数一致,方便统一缩进,插入8个空格不会自动缩进,手动按Tab键只插入4个空格,缩进不对齐。即为了保持对齐和缩进一致,按Tab键手动插入的空格数必须与自动缩进的空格数相同,即softtabstop选项的值必须为等于shiftwidth选项的值。将softtabstop选项的值设置为负数可以满足这个要求。后面如果要调整缩进的空格数,只修改shiftwidth选项的值即可。根据:helptabstop命令的说明,设置expandtab选项后,可以修改tabstop选项值为4,然后按Tab键插入一个制表符,也可以用4个空格代替。这里不用这个方案,而是选择配置softtabstop选项值,目的是配置softtabstop选项值,可以用Backspace键一次删除4个空格,比较方便。并配置softtabstop选项值为负数,可以自动与shiftwidth选项值保持一致,便于修改。您可以查看它请参阅:helpusr_30的制表符和空格部分和:helpusr_25的缩进和制表符部分以获取更多帮助信息。