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鍵其實有兩種功能:
- 當和其它key一起組合使用時,它們改變其它key的行為。
- 當它們獨自被按下時,什麼也不做。
這就意味著,我們可以做點事情。
我們可以在保留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裡面似乎無法表示CapsLockmac下,我用PCKeyboardHack修改鍵盤的默認值。
推薦閱讀:
※Vim 約等於記事本嗎?
※如何評價Vim配置文件SpaceVim?
※Vim 在插入模式下怎麼用 hjkl 控制方向?
※vimium 按F 怎么让它默认在后台打开新标签页?
※如何使用vim整理聊天記錄?
TAG:Vim |