vim - vim 中的制表符和空格

标签 vim vi

当自动缩进打开时,如何防止 vim 用制表符替换空格?

示例:如果我在行开头有两个制表符和 7 个空格,并且 tabstop=3,然后按 Enter 键,则下一行开头有四个制表符和 1 个空格,但我不想要这样......

最佳答案

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

:set expandtab

如果您想将文件中的所有制表符替换为 3 个空格(这看起来与 tabstop=3 非常相似):

:%s/^I/   /

(其中 ^ITAB 字符)

来自 VIM 在线帮助:

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

关于vim - vim 中的制表符和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69998/

相关文章:

正则表达式替换 : '[A-Z]' ' to [A-Z ]' - I can' t preserve the letter in in the string

vim - 使用VIM删除HTML标签

macos - Vim 与 Textmate

Vim:在文件中搜索快捷键

linux - 如何替换vi中具有隐含含义的文本

vim - 被 vim 中的大写字母 I 弄糊涂了

search - Vim:如何在同一搜索中搜索多个单词?

linux - VIM 中 python 代码窗口关闭后自动关闭 pylint 窗口

vim - 在可视模式下在行首粘贴数据

vim - 如何在 vim 中替换与号 "&"?