Emacs的avy插件

用Emacs的时候,我习惯将它分成“四个部分”

怎么弄的呢?一般是先按C-x 3分出左右两个window,再到各个window中用C-x 2分出上下两个window——这不是我的笔误,在Emacs的术语中,用来显示一个buffer的区域就叫做一个window。而常常被人们冠名为window的、最外层的窗体,则叫做frame

这样划分后,多次按下C-Tab(我把这个快捷键绑定到了命令other-window上),便可以按照左上、左下、右上、右下的顺序轮换当前聚焦的window了。

如果需要从其它window中复制内容到当前window中粘贴,操作会麻烦一点。以右上角需要左下角的内容为例:

  1. 按三次C-Tab换到左下角的window中——用快捷键是因为我不想去挪鼠标;
  2. kj上下移动光标到目标行——用kj是因为用了evil-mode插件(参见这篇文章);
  3. 复制内容,再按一次C-Tab回到原来的window中粘贴。

听起来可麻烦了。

好在Emacs有一个非常好用的插件,可以把第1和第2个步骤合在一起完成。

avy

这个非常好用的插件就是avy,它提供的avy-goto-line函数可以一步到位地完成上面的第1和第2个步骤。

用Emacs的包管理器就可以安装它

M-x package-install RET avy RET

接着要为命令avy-goto-line绑定一个喜欢的快捷键

(global-set-key (kbd "M-g f") 'avy-goto-line)

至此便可以在Emacs中愉快地使用M-g f来快速跳转到当前或其它window中的行了。百闻不如一见,我来演示一番。

avy-goto-line

众所周知,我用org-mode来跟踪自己的学习计划,还会将摸索过程中的一些半成品代码保存到org-mode的条目中。例如,我想要将左下角的window中的三个函数的定义,复制到右上角的代码块中去

于是我先按下M-g f,让avy为每一行赋予一个标记

因为希望切换到左下角的window的第一行,所以我先按下j

此时,在前一幅截图中不以字母j开始的标记统统消失了,而以字母j开始的标记则只留下了从第二个字符开始的部分。

再按下字母l,就可以将焦点切换到左下角的window,并且将光标移动到第一行的行首了。然后只需要选中内容、复制,并返回原来的window中粘贴即可。完整的过程如下

后记

如果在按下组合键M-g f后,接着按下的是数字键的话,avy-goto-line会认为使用者打算跳转到指定的行。它将在Emacs的minibuffer中继续等待输入更多的数字或按下回车。不过我不怎么用这个功能,因为我没有让Emacs显示行号,按行号来跳转对我并不方便。

阅读原文

169 声望
3.7k 粉丝
0 条评论
推荐阅读
如何在CommonLisp中解析命令行参数
clingon 是一个 Common Lisp 的命令行选项的解析器,它可以轻松地解析具有复杂格式的命令行选项。例如,下面的代码可以打印给定次数的打招呼信息

用户bPGfS阅读 594

封面图
从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木75阅读 7k评论 16

从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木45阅读 8.4k评论 6

从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木35阅读 6.6k评论 10

从零搭建 Node.js 企业级 Web 服务器(五):数据库访问
回顾 从零搭建 Node.js 企业级 Web 服务器(一):接口与分层,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,控制层与服务层实现了业务处理过程,模型层定义了业务实体并以 对象-关系...

乌柏木34阅读 5k评论 9

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go31阅读 2.4k评论 1

封面图
从零搭建 Node.js 企业级 Web 服务器(十三):断点调试与性能分析
Node.js 官方提供了断点调试机制,出于安全性考虑默认为关闭状态,可以通过 node 参数 --inspect 或 --inspect-brk 开启,配合 IDE 能够非常方便地调试代码,本章就上一章已完成的项目 licg9999/nodejs-server-ex...

乌柏木31阅读 4.1k评论 9

169 声望
3.7k 粉丝
宣传栏