当前位置:  开发笔记 > 开发工具 > 正文

vim中的制表符和空格

如何解决《vim中的制表符和空格》经验,为你挑选了4个好方法。

当autoindent打开时,如何阻止vim用制表符替换空格?

一个例子:如果我在行的开头有两个制表符和7个空格,并且tabstop=3,我按下Enter键,下一行有四个制表符,开头有1个空格,但我不希望...



1> 小智..:

根本不使用制表符也许是一个好主意.

:set expandtab

如果要将文件中的所有选项卡替换为3个空格(看起来非常相似tabstop=3):

:%s/^I/   /

(其中,^I是在TAB字符)

从VIM在线帮助:

'tabstop' 'ts'      number  (default 8)
        local to buffer
Number of spaces that a  in 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.



2> kev..:

你可以将所有转换TABSPACE

:set et
:ret!

或全部转换SPACETAB

:set et!
:ret!



3> Aristotle Pa..:

我想要的是自动缩进线与前一行具有完全相同的缩进字符.

:help copyindent

"copyindent" "词" 布尔 (缺省关闭); 本地缓冲区; {Vi无此功能}

自动输入新行时,复制现有行缩进的结构.通常,新缩进由一系列制表符重建,后跟所需的空格(除非启用'expandtab',在这种情况下仅使用空格).启用此选项会使新行复制用于在现有行上缩进的任何字符.如果新缩进大于现有行,则以正常方式填充剩余空间.

注意:设置'compatible'时,'copyindent'会被重置. 另见'preserveindent'.

:help preserveindent

"preserveindent" "P1" 布尔 (缺省关闭); 本地缓冲区; {Vi无此功能}

更改当前行的缩进时,尽可能多地保留缩进结构.通常,缩进由一系列制表符替换,后跟所需的空格(除非启用"expandtab",在这种情况下仅使用空格).启用此选项意味着缩进将保留尽可能多的现有字符以进行缩进,并且仅根据需要添加其他选项卡或空格.

注意:多次使用">>"时,生成的缩进是制表符和空格的混合.你可能不喜欢这个.
注意:设置'compatible'时,'preserveindent'会被重置. 另见'copyindent'. 使用:重新使用以清理空白区域.



4> Greg Hewgill..:

这是我的一部分.vimrc:

set autoindent
set expandtab
set softtabstop=4
set shiftwidth=4

这对我很有用,因为我绝对不希望我的源代码中有标签.从你的问题看来,你确实希望在下一行保留两个标签和七个空格,我不确定是否有办法教vim以适应这种风格.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有