[Mac] Delete鍵在Vim模式的時候失去功能和排除方法

[Mac] Delete鍵在Vim模式的時候失去功能和排除方法

在Mac的鍵盤上沒有backspace這個鍵,但Mac的delete就是Windows的backspace,也就是向左刪除的功能。Mac上如果要實現向右刪除的功能需要使用Command (⌘) + delete組合鍵來使用,但是我這次卻發生在Vim底下按了Delete鍵卻沒有反應的情況,找了一下網路上的資料後發現有下列幾種原因,

原因

  1. 使用delete鍵出現了^? [1]
  2. 使用delete鍵,游標移動,但是字元仍然顯示。退回normal模式後字元才徹底消失 [2]
  3. 使用delete鍵沒有反應 [3]

我遇到的問題是第三種,因為我的Vim使用了Compatible模式,意思是把backspace變數設定為空值了。Compatible模式是Vim為了相容vi而出現的配置,它的作用是使Vim的操作行為和規範與vi一致,而這種模式下backspace配置是空的。即意味著backspace無法刪除indentend of linestart這三種字元。

利用指令來確認自己目前的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?

Add a Comment