vim 非qwerty布局鍵位映射問題解決方法
本人使用colemak,其他布局可以參考

問題: 自從從qwerty換到colemak后, 需要重新映射一些按鍵,大部分按鍵就 noremap 一下就可以了,但是如果把i映射為l(光標(biāo)向右移動(dòng))后(k映射為i),有一個(gè)問題就是i 是 text-object 的前綴, 如果我想執(zhí)行 change inner word 的時(shí)候,依舊需要使用 qwerty 的 ciw, 即使我已經(jīng)把i映射為l.最難受的一點(diǎn)是在visual mode 的時(shí)候,我想用i(已映射為l)來向右移動(dòng)光標(biāo)的時(shí)候,總需要一個(gè)延遲(timeout)后光標(biāo)才移動(dòng)過去,實(shí)際上這是在看你是否想使用 iw(visual inner word),得等到timeout后光標(biāo)的顯示才會(huì)移動(dòng)過去(但實(shí)際上已經(jīng)移動(dòng)奪取了),因此,我經(jīng)常在visual mode 下以為光標(biāo)沒有移動(dòng)過去多按了一次i去向右,然后就刪來一個(gè)字母.
解決方法: 使用 `set langmap=ik,ki,IK,KI`, langmap 會(huì)交換這兩個(gè)鍵全部的功能, 這個(gè)時(shí)候你就可以把i鍵完全當(dāng)作k鍵,k鍵完全當(dāng)作i鍵了,(當(dāng)然insert打字不會(huì)改變), 這個(gè)時(shí)候就可以使用 ckw 來實(shí)現(xiàn) ciw,在visual模式下按i鍵也不會(huì)有延遲.注意這樣你要映射colemak i鍵位置應(yīng)該要map的是k,因?yàn)閕和k已經(jīng)交換了,所以要 noremap k l,之前的配置也需要檢查一下.
nvim lua 的寫法是 vim.o.langmap="ik,ki,IK,KI"
感謝stackoverflow.太開心了!!!