我想设置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>"
我做错了什么?
答案 0 :(得分:2)
一个键只能有一个工作映射(你可以定义至少两个:buffer-local(每个缓冲区一个)和一个全局,但它们不能同时工作),所以你需要这样的东西:
inoremap <expr> <Tab> stridx('])}', getline('.')[col('.')-1])==-1 ? "\t" : "\<Right>"
不要使用strpart()
,string[idx1:idx2]
工作正常(idx1
,idx2
,:
都是可选的,但至少必须存在一个),更少打字,更易读。