expandtabs
使用vim,如果我在该行的任何文本的左侧,如果我在任何非空白字符的右侧,我想有效地关闭。(我想使用制表符进行缩进,使用空格进行对齐。)
这可以做到吗?
expandtabs
使用vim,如果我在该行的任何文本的左侧,如果我在任何非空白字符的右侧,我想有效地关闭。(我想使用制表符进行缩进,使用空格进行对齐。)
这可以做到吗?
是的。使用智能标签插件。
此脚本允许您在行的开头使用正常的制表符设置,并将制表符扩展为其他任何地方的空格。这有效地将“缩进”与“对齐”区分开来。
<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
) 无关。
尝试这样的事情:
function! TabMaybeIndent()
if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
return "\<Tab>"
else
return " "
endif
endfunction
set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>