做异端中的异端 -- Emacs裸奔之路7: 怀念Vim的好

组合键的瑕疵

从Vim切换成Emacs之后,有一明显的不适就是感受Emacs的按键很硬,
Vim移动是使用一个按完成的,而Emacs是组合键。
如果向前移动一个字,Vim只要在ESC模式下按w,而Emacs是Alt-f.
特别是当你对键盘改键之后不是很熟悉的时候,你会用力按住Alt,生怕有差错。
如果要往前面移动多个字,那得一直按住Alt,所以觉得Emacs很硬。

组合键的另一个问题就是,你必须两只手同步放在键盘上,如果你想偶尔跷一个二郎腿或者换一个坐姿,就不是非常方便了。

这个问题可以通过repeat mode缓解:

(defvar-keymap custom-repeat-map
  :repeat t
  "f" #'forward-word
  "b" #'backward-word
  )

(repeat-mode)

上面代码执行之后,只要执行forward-word或者backward-word,就可以使用字母f与b重复,如果出现f与b之外的按键,就中断。
就是说是第一个命令必要组合,后面的命令只要按后缀,不需要组合。
以移动字为例,从之前的:
Alt-f Alt-f Alt-f Alt-f

优化成:
Alt-f f f f

录制宏优化

Emacs的录制功能非常强大,以至分4个命令完成:

  • F3:kmacro-start-macro-or-insert-counter
  • F4:kmacro-end-or-call-macro
  • C-x (:kmacro-start-macro
  • C-x ):kmacro-end-macro

但大部分日常并不需要这么复杂.

而Vim的宏功能就非常简单,按q开始,再按q结束,在Emacs实现一样的功能,代码如下:

(global-set-key (kbd (concat custom-user-prefix-key "q")) 'ich/toggle-keyboard-macro)
(defun ich/toggle-keyboard-macro ()
    (interactive)

    (if defining-kbd-macro
      (kmacro-end-macro 1)
      (kmacro-start-macro 0)))

上一篇:vue-cli创建项目报错:command failed: npm install --loglevel error


下一篇:JAVA/SPringBoot小工具程序直接打包EXE文件