2012-04-10 99 views
1

我想设置vim,以便它将光标向右移动,如果我按关闭括号上的选项卡。与自动完整圆括号一起使用时,这很有用。跳过关闭vim中的括号

这是我迄今(不工作):

inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == "}" ? "\<Right>" : "\<Tab>" 
inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : "\<Tab>" 
inoremap <expr> <Tab> strpart(getline('.'), col('.')-1, 1) == "]" ? "\<Right>" : "\<Tab>" 

我在做什么错?

+0

当您按关闭分隔符时,大多数自动关闭插件已经执行此操作。可能想看看他们中的一个,看看他们是如何做的,并将其更改为使用Tab而不是结束分隔符。 – 2012-04-11 00:14:17

回答

2

对一个键只能有一个工作映射(可以定义至少两个:缓冲区本地(每个缓冲区一个)和一个全局,但它们不能同时工作),所以你需要类似即:

inoremap <expr> <Tab> stridx('])}', getline('.')[col('.')-1])==-1 ? "\t" : "\<Right>" 

不要使用strpart()string[idx1:idx2]工作正常(所有的idx1idx2:是可选的,但至少有一个必须存在),少键入和更具有可读性。

+0

谢谢!你摇滚!我现在唯一的问题是,如果光标一直到右侧,我的Tab键不会插入制表符:( – zfedoran 2012-04-11 03:33:25

+0

已修复行结束标签问题:https://gist.github.com/2356736 – zfedoran 2012-04-11 03:57:04