1

我想设置 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>"

我究竟做错了什么?

4

1 回答 1

3

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

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

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

于 2012-04-11T02:26:58.637 回答