2012-04-10 115 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