使用vim,我想在expandtabs
之前关闭,如果我在行上的任何文本的左侧,以及我是否在任何非空白字符的右侧。 (我想使用制表符缩进和空格进行对齐。)可以使vim只扩展到文本左侧的标签?
可以这样做吗?
使用vim,我想在expandtabs
之前关闭,如果我在行上的任何文本的左侧,以及我是否在任何非空白字符的右侧。 (我想使用制表符缩进和空格进行对齐。)可以使vim只扩展到文本左侧的标签?
可以这样做吗?
是。使用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
)的。
尝试这样:
function! TabMaybeIndent()
if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
return "\<Tab>"
else
return " "
endif
endfunction
set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>
这看起来像一个合理的方法。经过微小的调整,您甚至可以按照当前的`softtabstop`设置,而不是盲目地插入4个空格。 – ephemient 2009-07-20 02:37:09
我坚信可以做到。不过,我不认为这会很容易。 – 2009-07-20 02:17:03