内容
这里会讲怎么在emacs,或者spacemacs里映射方向按键。
背景
在使用Spacemacs的emacs里,使用evil得到Vim方式操作,在Normal模式下移动方向键是h,j,k,l。但写代码时经常会遇到一类问题,在Insert模式时,当输入前半括号时,自动补全另一半括号,这时光标位于括号内,当时想继续输入时,你有两种选择:
- 其一:回到Normal模式,移动光标,再进入插入模式;
- 其二,使用方向键移动光标到括号外,继续输入。
方式一,按键数量太多,方式二,要移动手臂,对于一个经常写代码的人来说,多移动一次手臂,意味着职业病多增加一分。
于是就想在Insert模式下,映射方向按键,使之不用方向键,也不用多一个Normal模式切换。
方法
使用spacemacs的,把下面加在dotspacemacs/user-config ()下:
(define-key evil-insert-state-map (kbd "C-h") (kbd "<left>"))
(define-key evil-insert-state-map (kbd "C-j") (kbd "<down>"))
(define-key evil-insert-state-map (kbd "C-k") (kbd "<up>"))
(define-key evil-insert-state-map (kbd "C-l") (kbd "<right>"))
使用emacs的,添加命令:
(global-set-key (kbd "C-h") (kbd "<left>"))
(global-set-key (kbd "C-j") (kbd "<down>"))
(global-set-key (kbd "C-k") (kbd "<up>"))
(global-set-key (kbd "C-l") (kbd "<right>"))
其实最主要是知道,emacs里方向键的命令是哪个,找这个费了点时间,其它的都很简单。
最开始我胡乱按图索骥,试了"up",发现结果很惊艳,后面才知道原来要是"<up>",可以试试,如果"up"会发生什么,也算是一大发现了。