`

Emacs简化按键利器hydra

阅读更多

上周末颇花了些心思写出来的, 首发blog链接 http://blog.hickwu.com/posts/336/ 作者 Hick 如有更新, 我会在首发链接修改.

 

时不时有人冒出来说有 Emacs 教徒因为小拇指按 ctrl 太多导致 XXX 病, 不要用 Emacs! 有 XXX 病的人估计跟得出这个结论的人类似, 有这样的特质: 不懂得思考或者懒得主动改变. Emacs 教里不但有 evil/spacemacs 这样的 vi/vim 一族, 也有把 capslock 改成 ctrl 的键盘党, 还有改变按键习惯的行动派. 这才彰显自由的魅力, 是的, Emacs 难用爆了 --- 对把握不好自由的人来说.

 

作为非高手的资深 Emacs 教徒, 建议不要去死记 Emacs 按键, 知道常用的若干(拍个脑袋比如十几二十)个就可以了. 个人有限的见识范围里, 简化 Emacs 按键习惯有俩种思路, 一种是 smex 式, 一种是 hydra 式. 喜欢按 ESC 的 vi 党, 除了试自成一派的 evil/spacemacs, 也可以考虑安装个 smex 并绑定到 ESC 键绑找找感觉, 就是这样 (global-set-key (kbd "<escape>") 'smex) . vi 党还可以继续想象.

       

该吹捧 hydra 了. 初步考证其作者的介绍文章和 github commit 记录, hydra 是一个 2015 年才开始的新 Emacs 包, 在 github 已经收获了 100 多个 star , 相当受欢迎了 --- 截止 hick 同学考证的时间 2015-03-21 , github 上超过 100 个 star 的 Emacs 类项目不到 200 个.

 

特别说明下, hydra 作为新兴项目, 作者年初介绍的 blog http://oremacs.com/2015/01/20/introducing-hydra/ 的使用方式跟最新的情况已有转变, 不再支持 hydra-create , 说不定后续还会有什么改进. 本文仅作为指引, 最新情况最好参考官方: https://github.com/abo-abo/hydra . 插播广告: 也欢迎关注本人(Hick)在维护的 Emacs 微信公众账号: Emacsist, 除了分享交流 Emacs 使用, 看到有 hydra 的新情况我也会通过公众账号广而告之 :)

 

如果用过 magit , 对 magit-status 下按 c 等出现的可选菜单应该有印象, hydra 正是把这个能力扩展了. hydra 也在快速进化变强, 最基本的思路是: 根据使用者需要组合一系列函数, 每个函数用一个字母表示; 再定义一个前缀按键比如 C-t (当然也可以是 ESC). 配置好以后按 C-t 就会在 mini buffer 中显示该系列函数的列表, 再按对应的字母即可执行函数, 候选列表提供高亮以及函数说明等体验.

 

建议以包方式安装(需 Emacs 24 或者以上版本) hydra: M-x package-install hydra

 

在配置文件中定义需要组合的相关函数以及对应菜单的样式的函数, 并绑定到全局快捷键 C-t :

(defhydra hydra-hick (:color pink
                             :hint nil)
  "
^Utl^              ^Unmark^           ^Actions^          ^Git
^^^^^^^^-----------------------------------------------------------------
_k_: kill line     _u_: unmark        _x_: execute       _S_: magit show
_s_: smex          _U_: unmark up     _b_: bury          _g_: magit status
"
  ("k" kill-line :exit t)
  ("u" Buffer-menu-unmark)
  ("U" Buffer-menu-backup-unmark)
  ("s" smex)
  ("x" Buffer-menu-execute)
  ("b" Buffer-menu-bury)
  ("T" Buffer-menu-toggle-files-only)
  ("g" magit-status :color blue)
  ("S" magit-show :color blue)
  ("c" nil "cancel")
  ("v" Buffer-menu-select "select" :color blue)
  ("o" Buffer-menu-other-window "other-window" :color blue)
  ("q" quit-window "quit" :color blue))

(global-set-key (kbd "C-t") 'hydra-hick/body)

生效后按 C-t 就会出现如下图所示可选菜单, 再按 k 就会调用 kill-line (默认绑定到 C-k) 删除当前行光标以后的文本. 注意定义 k 对应的函数的时候的 ":exit t" 表示执行完 kill-line 函数以后退出 hydra 提示菜单, 而默认情况下没有指定则不会退出.

 

 

示例只是随便找了一组函数弄到了一起, 也可以按照个人使用习惯定义多组, 比如 python 操作习惯一组绑定到 "C-t p", ruby 操作习惯一组绑定到 "C-t r". 用户自己定义其实稍显麻烦, 个人预测可能将来会有一些定义好的 hydra 操作模板可供选择. 更多高级用法等参见官方https://github.com/abo-abo/hydra .

 

有些同学可能用多了按键组合比如 "C-x o" , 却不知道其对应的函数, 按键之前按 "C-h" 也就是 "C-h C-x o" 即可, "C-h m" 可以查看当前 major-mode 和所有 minor-mode 提供的相关函数和按键等情况, "C-h" 前缀的系列按键最好都熟悉下, "C-h C-h" 可以查看.

 

某种意义上来说, hydra 做的也没什么神奇的, 跟挨个定义全局或者局部组合键多了一个提示说明, 可以省去组合键的记忆. 比较不那么常用, 时不时又需要或者不容易记的若干相关函数建议组团走 hydra 方式.

呼应下开头, 就个人的使用经验来说, Emacs 的终端跟非终端体验的差别, 导致我没有动力在某些场景(比如 vps, 公司线上机器)下使用 Emacs. 用 putty 终端下 ace-jump-mode 和 company-mode 等个人使用体验都不大好, 有尝试去 github 提 issue , 没能力和精力去深究. 不得不以简单的方式使用 vi , 比较遗憾. (根据小伙伴的反馈, 我的个人体验差别可能主要由 windows 的工具导致的, 回头我再试试 mac 终端等, 有结果了再来更新)

 

ps.

  • 欢迎转载, 不过麻烦注明原文地址和作者
  • 本文纯属个人心得, 不代表任何立场
  • 如有疏漏, 欢迎交流指正
  • 对喜欢交流而不只是想问问题的 Emacs 爱好者, 欢迎加入初创 QQ 群 137865857 或下面二维码的 Emacs 微信群, 不满足条件的进去了也会被很带感的踢出去的, 慎入! 喜欢热闹人多的, 可以加入源自水木社区 Emacs 版的 QQ 群: 59134186 有 500 多号人.

!!!!!! 如果转载的特别注意下面的微信二维码, 有效期只有 7 天, 要么不带 ps. 以下的内容, 要么就直接引用二维码图片地址, 我观察有价值的话会持续更新对应的二维码保证有效.

微信群附加说明:

  • 对"喜欢分享交流而不只是想问问题的 Emacs 爱好者", 欢迎加入; 退出自由,
  • 不追求人多和热闹, 追求尽可能的实用: 不满足上条的进来了也会被很带感的踢出去的, 慎入!
  • 建议但是不限制: 移动版微信阅读, PC版或者网页版参与讨论
  • 有时候微信群消息多太骚扰, 可以考虑临时在群设置种开启免打扰模式
0
1
分享到:
评论

相关推荐

    hydra:使Emacs绑定始终存在

    九头蛇 这是GNU Emacs的软件包,可用于将相关命令绑定到带有公共前缀的短绑定系列中,即Hydra。诗人描述通过前缀绑定(身体+任何一个头)召唤九头蛇之后,所有头都可以连续调用,只需要短暂扩展即可。 一旦大力神...

    emacs-keypression:GUI版本Emacs的按键可视化工具

    GUI版本Emacs的按键可视化工具 该软件包是GUI版本Emacs的按键可视化程序。创建截屏视频时,您不再需要使用外部工具来显示击键! 安装 melpa提供了按键功能。您可以通过package-install Mx package-install [ret] ...

    auctex下载 emacs+auctex 写tex文件的利器

    emacs+auctex 写tex文件的利器

    Emacs User 's Guide中文版电子书

    GNU Emacs 是什麽 GNU EMACS 的特质 Emacs 的线上辅助说明 Emacs 的基本知识 Emacs 的自学教材 Ctrl-h 的用法 Emacs 的 info 使用说明 Emacs 的整合环境 如何在 Emacs 中执行 Shell 的指令 有关目录的编辑...

    三本emacs书籍:生存于emacs+生活于emacs+emacs手册

    本压缩包包括了:living in emacs, survive in emacs & gnu emacs pocket referrence. 希望大家喜欢

    Emacs使用详解,Emacs使用详解

    Emacs使用详解Emacs使用详解Emacs使用详解

    emacs 24 hours PDF

    Emacs is one of the most powerful text editors available, yet it is not the easiest to navigate, in part because it covers so much. Sams Teach Yourself Emacs in 24 Hours helps simplify the program by ...

    emacs 快速配置脚本包

    快速搭建的主要思想是采用执行注册表脚本 设定 emacs 查找配置文件的路径为 c: emacs home emacs 同时又在此文件中定位到我们现在刚下载的路径 及更改 home 目录的方式 包含最基本的配置 颜色 字体等 脚本以及常用的...

    emacs windows下emacs 编辑器

    emacs windows下emacs 编辑器 据说是神的编辑器

    linux emacs 配置文件

    本配置文件基于网上提供的其他配置文件进行修改。 支持: emacs 24 +cedet 1.1 +ecb 2.40 源配置文件下载地址: http://download.csdn.net/detail/karotte/3812760

    GNU_Emacs GNU_Emacs

    GNU_Emacs orelly出版 学习emacs的经典著作

    emacs-cfg.emacs

    非常好用的emacs配置文件!日历功能,自动不全功能,行号显示功能,屏蔽光标功能等!

    emacs 24.4 for windows

    自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。它们都...

    gnu emacs-24.3

    EMACS,即Editor MACroS(宏编辑器)的缩写,被称为神之编辑器,最初由Richard Stallman于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard ...

    Emacs使用手册pdf

    Emacs使用手册 Emacs使用手册 Emacs

    Emacs教程Learn_GNU_Emacs

    emacs中文教程,emacs中文手册,Emacs基础教程,Learn_GNU_Emacs

    emacs快速指南教程

    emacs快速指南,学习emacs的基础教程

    Emacs User's Guide emacs使用手册

    emacs使用手册 简要介绍emacs的使用

    emacs播放Mp3文件

    emacs播放MP3文件。 emacs播放MP3文件。 emacs播放MP3文件。

    emacs配置文件 (.emacs)

    emacs config file, emacs编辑器的一个配置文件

Global site tag (gtag.js) - Google Analytics