使用vim,如果我在行的任何文本的左边,如果我在任何非空格字符的右边,我想有效地关闭expandtabs
。 (我想使用标签来缩进和空格以便对齐。)
可以这样做吗?
答案 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>