標籤:

Vimrc 能否將 capslock 綁定為 esc 鍵?

用vimrc可以將jj綁定為esc鍵,但是能否將capslock鍵綁定為esc呢?目前是用系統級改鍵軟體實現的.不知道能否用vim的配置文件內置完成


Autohotkey運行以下腳本即可

#IfWinActive GVIM
Capslock::Esc
#IfWinActive


Vim 是做不到這個的。目前我是使用 xmodmap(X 下)/loadkeys(tty 下) 實現此功能的。

另外,我覺得如果只是更改一個程序的鍵位,會導致不同程序的不一致性(比如有人經常在終端下試圖按 Ctrl-C 來複制)。


setxkbmap -option caps:swapescape


一直不明白,大家有很多機會用ESC嗎?為什麼不用ctrl+c呢?

Ctrl+[ 和 ESC具有完全相同的ASCII碼值(0x1b),所以這兩個鍵完全一樣, 而Ctrl+C是0x3。

Ctrl+C在vim正在執行的時候會中斷當前的命令,其它情況下會回到Normal mode。

比如打開一個大的文本文件並進行syntax分析(syntax enable)時,使用Ctrl+C會打斷當前的分析並給出一個沒有高亮的顯示。(使用大文件是為了讓你能有時間鍵入Ctrl+C)

平時使用中Ctrl+C主要會影響縮寫(:help 24.7)。

比如 使用縮寫 :iabbrev ad advertisement,在輸入模式下鍵入ad後按ESC會擴展為advertisement,但如果按Ctrl+C的話,不會有任何擴展。

對於我而言,沒有習慣使用縮寫,Bram使用縮寫來插入大段注釋像

/*************************************

kdjfksjdkfjskdf

************************************/

而我則是使用map。

建議不要使用capslock替代為ESC鍵

養成習慣後,偶然要用別人的vim時,你會很煩。因為這個鍵的使用頻率實在是太高了。而且你沒有一個簡單的方法來改造別人的環境使之符合自己的習慣。

建議練習直接使用Ctrl+[

這個應該是最標準的做法了。

我是因為使用Ctrl+C已經很久,習慣了,想改很難啊。

應該盡量使用程序默認的快捷鍵。沒有的可以擴展,但盡量不要去改變。特別是使用外部程序進行改變,不然換台機器你就暈了。


鍵盤上的Control和Shift鍵其實有兩種功能:

  1. 當和其它key一起組合使用時,它們改變其它key的行為。
  2. 當它們獨自被按下時,什麼也不做。

這就意味著,我們可以做點事情。

我們可以在保留Control鍵功能的基礎上,再『綁定』上另一功能『Esc』。

但在Mac下Control鍵並不是那麼好按(PC下再好按,也沒有Home Row上的Capslock好按),使用頻率又相當高,修改下它。

首先將CapsLock鍵映射成Control鍵,這個功能可以通過系統的system preference實現:

好了,現在Capslock鍵已經被映射成Control鍵了。

接著,使用KeyRemap4MacBook,修改Control鍵的功能。

現在,當單獨按下Capslock鍵時,因為它被映射成了Control,Control又被修改成單獨按下時『send Escape』,所以系統發出的是『Escape』鍵。這點是系統級的修改,不僅僅是在Vim中。

當按下Capslock的同時,再去按其它鍵,它表現的就像個正常Control鍵一樣。

對於這個Timeout的時間長短,也可以在KR4MB中的Key Repeat標籤下修改。


參見

http://xyztony1985.blog.163.com/blog/static/3611782011752420104/

http://blog.sina.com.cn/s/blog_77f5a65c0101bxxn.html


Mac 上將cap lock 改成 esc,建議使用Seil - Software for OS X.親測可用。


Ubuntu下是可以改的:

System- &> Preferance- &> Keyboard- &> Layouts- &> options- &> CapsLock Key Behavior- &> Swap ESC and CapsLock

Windows貌似只能通過軟體了,其實就是修改了註冊表。

vim裡面似乎無法表示CapsLock


mac下,我用PCKeyboardHack修改鍵盤的默認值。


推薦閱讀:

Vim 約等於記事本嗎?
如何評價Vim配置文件SpaceVim?
Vim 在插入模式下怎麼用 hjkl 控制方向?
vimium 按F 怎么让它默认在后台打开新标签页?
如何使用vim整理聊天記錄?

TAG:Vim |