Mac的VIM中delete鍵失效的原因和解決方案


在Mac的鍵盤上實際是沒有backspace這個鍵的。其實Mac的delete就是Windows的backspace,實現的都是向左刪除的功能。Mac上如果要實現向右刪除的功能需要使用⌘+delete組合鍵來使用。

原因

網上搜到了很多答案但是現象和解決方案都不同,例如:

  • 使用delete鍵出現了?
  • 使用delete鍵,光標移動,但是字符仍然顯示。退回normal模式后字符才徹底消失
  • 使用delete鍵沒有反應

博主這里遇到的是第三種情況。每次從normal模式再次進入insert模式后,delete就再也無法向左刪除。取而代之的是Mac那蛋疼的duang,duang,duang警告聲。

如果你是伸手黨,只想知道怎么解決的話,那么通關密碼是在~/.vimrc中加上set backspace=2

恭喜!你的問題就此解決。(如果問題還在,建議仔細將自己delete鍵行為和上述三種情況做比對,點擊鏈接對症下葯)

如果你也想知道這個惱人的duang,duang,duang到底是什么原因產生的話,那么讓我們往下看。

出現這個問題,基本是因為你的VIM使用了compatible模式,或者把backspace變量設置為空了。

好奇的讀者一定會問,這兩個配置又代表了什么意思?其實compatible模式是VIM為了兼容vi而出現的配置,它的作用是使VIM的操作行為和規范和vi一致,而這種模式下backspace配置是空的。

即意味着backspace無法刪除indentend of linestart這三種字符。

如果你出現了和博主一樣的情況,不妨在解決問題前先在VIM中用set backspace?命令查看下自己當前的刪除模式。你會看到如下的情況:
right

效果就相當於delete只能刪除本次insert模式中輸入的字符。

那么為什么backspace=2又能解決問題呢?其實這個命令是set backspace=indent,eol,start的簡化寫法,也就相當於把delete鍵配置成增強模式。具體數值和對應增強模式的對應關系見 vim官方文檔,簡單摘錄如下:

0 same as “:set backspace=” (Vi compatible)
1 same as “:set backspace=indent,eol”
2 same as “:set backspace=indent,eol,start”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM