[Mac] Delete鍵在Vim模式的時候失去功能和排除方法
Posted On 2018-06-01
[Mac] Delete鍵在Vim模式的時候失去功能和排除方法
在Mac的鍵盤上沒有backspace這個鍵,但Mac的delete就是Windows的backspace,也就是向左刪除的功能。Mac上如果要實現向右刪除的功能需要使用Command (⌘) + delete組合鍵來使用,但是我這次卻發生在Vim底下按了Delete鍵卻沒有反應的情況,找了一下網路上的資料後發現有下列幾種原因,
原因
我遇到的問題是第三種,因為我的Vim使用了Compatible模式,意思是把backspace變數設定為空值了。Compatible模式是Vim為了相容vi而出現的配置,它的作用是使Vim的操作行為和規範與vi一致,而這種模式下backspace配置是空的。即意味著backspace無法刪除indent,end of line,start這三種字元。
利用指令來確認自己目前的vim模式是什麼,在vim底下輸入下面的指令並按下Enter,
:set backspace?
如果出現backspace=,那就表示你目前的值是空值,空值的效果就相當於delete只能刪除本次insert模式中輸入的字元,具體數值和對應增強模式的對應關係見Vim官方文檔,簡單摘錄如下:
- 0 same as “:set backspace=” (Vi Compatible)
- 1 same as “:set backspace=indent,eol”
- 2 same as “:set backspace=indent,eol,start”
排除方法
解決的方法就是把backspace=的值設定為2,
:set backspace=2
這樣就可以在Mac的Vim底下像Windows一樣使用delete鍵了,以上。
Reference
Mac的VIM中delete键失效的原因和解决方案
vim not allowing backspace
Backspace and delete problems
Vim: what's the default backspace behavior?