vim可以只扩展文本左侧的选项卡吗?

时间:2009-07-20 01:57:45

标签: vim alignment indentation options

使用vim,如果我在行的任何文本的左边,如果我在任何非空格字符的右边,我想有效地关闭expandtabs。 (我想使用标签来缩进和空格以便对齐。)

可以这样做吗?

2 个答案:

答案 0 :(得分:5)

是。使用Smart Tabs插件。

  

此脚本允许您使用常规选项卡设置作为行的开头,并将选项卡在其他任何位置展开为空格。这有效地区分了“缩进”和“对齐”。

     

<tab>使用编辑器选项卡设置在行的开头(第一个非空格字符之前)插入制表符,否则插入空格。

     

<BS>使用编辑器标签设置删除标签或“扩展”标签ala smarttab

要使Vim排队函数参数,请添加

set cindent
set cinoptions=(0,u0,U0

.vimrc。该插件将对空白进行编码:

int f(int x,
......int y) {
--->return g(x,
--->.........y);
}

这使“x”和“y”的对齐方式与标签大小(tabstop)无关。

答案 1 :(得分:4)

尝试这样的事情:

function! TabMaybeIndent()
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
        return "\<Tab>"
    else
        return "    "
    endif
endfunction

set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>