Vim:非空格后缩进是否可以使用空格?

时间:2014-11-16 12:42:00

标签: vim

当光标前面有非空白字符时,是否可以让VIM使用制表符空格?

例如:

(假设TAB为--->为空格。)

--->function(arg);••••••/* comment */
    //            ^ use spaces when pressing TAB after non-whitespace chars.

否则我在按Tab键时需要真正的标签。

当标签用于初始缩进时,这很有用,但是在使用空格后所有文本的对齐方式。

2 个答案:

答案 0 :(得分:2)

如果没有脚本或插件,则无法自动执行此操作。

“Smart Tabs”插件专为此任务而设计。 http://www.vim.org/scripts/script.php?script_id=231

为了让问题少发生,我们会提供内置的preserveindentcopyindent选项,以防止在设置expandtab时丢失现有的标签缩进。

答案 1 :(得分:1)

使用:set expandtab
这将在插入期间将所有制表符扩展到空格,甚至是行开头的那些(可能是最好的) 使用CTRL-V<Tab>插入标签。

来自vim帮助(:help expandtab

'expandtab' 'et'        boolean (default off)
                        local to buffer
                        {not in Vi}
        In Insert mode: Use the appropriate number of spaces to insert a
        <Tab>.  Spaces are used in indents with the '>' and '<' commands and
        when 'autoindent' is on.  To insert a real tab when 'expandtab' is
        on, use CTRL-V<Tab>.  See also :retab and ins-expandtab.
        NOTE: This option is reset when 'compatible' is set.

使用:set shiftwidth=4(或:set shiftwidth=8)来控制每个缩进添加的空格数。

'shiftwidth' 'sw'       number  (default 8)
                        local to buffer
        Number of spaces to use for each step of (auto)indent.  Used for
        'cindent', >>, <<, etc.

其他感兴趣的设置包括softtabstoptabstopautoindent