跳过vim中的右括号

时间:2012-04-10 21:54:46

标签: vim parentheses

我想设置vim,以便在我按下右括号上的tab时将光标向右移动。当与自动完整括号一起使用时,这很有用。

这是我目前所做的(不起作用):

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>"

我做错了什么?

1 个答案:

答案 0 :(得分:2)

一个键只能有一个工作映射(你可以定义至少两个:buffer-local(每个缓冲区一个)和一个全局,但它们不能同时工作),所以你需要这样的东西:

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

不要使用strpart()string[idx1:idx2]工作正常(idx1idx2:都是可选的,但至少必须存在一个),更少打字,更易读。