Emacs key bindings for vim users
Emacs key bindings for vim users | Scarletsky
盒子
简介
Emacs 是一个文本编辑器,号称是伪装成编辑器的操作系统。提起 Emacs,必定会联想到它的竞争对手 Vim,它们都是古老而强大的编辑器。虽然我已经用 Vim 好几年了,也听说过 Emacs 的各种强大的能力,但一直没有动力去学习它,直到最近看到强大的 org mode,才鼓起勇气去学习 Emacs。本文主要记录我学习 Emacs 的过程中与 Vim 的键位比较。
核心键位
Emacs 使用组合键的形式来触发不同的功能,最常见的是以下几个键位:
- C 即 Ctrl 键,如
<C-x>表示 按着 Ctrl 再按 x - S 即 Super 键,通常是 Windows 键或者是 Option 键
- M 即 Meta 键,通常是 Esc 键,如
<M-x>表示先按下 Esc,然后松手,再按 x
常用键位绑定
Edit
| Vim | Emacs | |
|---|---|---|
| 向上移动 | k | C-p |
| 向下移动 | j | C-n |
| 向左移动 | h | C-b |
| 向右移动 | l | C-f |
| 移动到行首 | 0 | C-a |
| 移动到行尾 | $ | C-e |
| 移动到行首非空字符 | ^ | M-m |
| 移动到下一个单词 | w | M-f |
| 移动到上一个单词 | b | M-b |
| 移动到第10行 | 大专栏 Emacs key bindings for vim usersyle="text-align:left">10gg | M-g g 10 RET |
| 移动到下一页 | C-d | C-v |
| 移动到上一页 | C-u | M-v |
| 移动到文件首行 | gg | M-< |
| 移动到文件尾行 | G | M-> |
| 把当前行移动到屏幕中央 | zz | C-l |
| 进入选择模式 | v | C-SPC |
| 删除光标中的字符 | x | C-d |
| 删除光标到行尾的字符 | d$ | C-k |
| 删除光标所在行 | dd | C-w 或 C-a C-k |
| 删除下10行 | 10dd | C-u 10 C-w |
| 撤销上一次操作 | u | C-/ |
| 重复上一次命令 | . | C-z z |
| 向前搜索 | / | C-s |
| 向后搜索 | ? | C-r |
| 搜索下一项 | n | C-s |
| 搜索上一项 | N | C-r |
| 开始录制宏 | F3 | |
| 停止录制宏 | q | F4 |
| 执行宏 | @q | F4 |
| 执行宏10次 | 10@q | C-u 10 F4 |
Window
| Vim | Emacs | |
|---|---|---|
| 把窗口水平切分 | :new RET | C-x _ |
| 把窗口垂直切分 | :vnew RET | C-x 竖线(打出来会破坏布局,所以就不打了) |
| 切换窗口 | C-w j/k/h/l | C-x o |
| 关闭当前窗口 | :q RET | C-x 0 |
Buffer
| Vim | Emacs | |
|---|---|---|
| 创建 Buffer | :new RET | C-x b name RET |
| 列出 Buffer | :ls RET | C-x b |
| 删除 Buffer | :bd RET | C-x k RET |
参考资料
https://www.gnu.org/software/emacs/manual/
http://notex.life/t/emacs-key-binding/18
Emacs key bindings for vim users的更多相关文章
- Sublime key bindings使用
开启vi mode后,可以使用很多的VI快捷方式,所以我的sublime已经不是单纯的st了,st的VI模式不完全支持所有的快捷键.我们来看一段官网的key bindings示例: { "k ...
- 我用Emacs,后来转向Vim——Vim学习之Vim键盘图(绝对值得珍藏)
Emacs本来就比较臃肿,麻烦.当我发现Vim键盘图时,我就渐渐转向Vim,追随Unix/Linux哲学去了.. 我用了Emacs三个月,因为它的学习曲线没Vim陡,这点吸引了,我使用Linux才7. ...
- 《生活在Linux中》之:在Bash的Emacs模式中使用Vim
export EDITOR=vim ctrl-x ctrl-e
- 我所使用的Linux软件集合
自从2003-2004春节之际初次尝试使用Linux以来,至今已十年有余了.尤其是整个博士研究期间,坚持在Linux下开展学习与研究工作,前前后后试用了不少桌面环境.窗口管理器.终端程序以及其他应用软 ...
- ace -- about
Built for Code Ace is an embeddable code editor written in JavaScript. It matches the features and p ...
- vim does not map customized key?
it is a long time confusing me that why my customized key map in vim does not work? Some vim configu ...
- vim和emacs
vim和emacs 在编程界一直有两大神器的传说.这两大神器一个是emacs,一个是vim.一个是神的编辑器,一个是编辑器之神. 程序员的圈子里面也一直流传着一个段子,说是世界上的程序员分为三种.使用 ...
- SpaceVim - 让你的vim变得更加高效和强大
SpaceVim 中文手册 项 目 主 页: https://spacevim.org Github 地址 : https://github.com/SpaceVim/SpaceVim SpaceVi ...
- emacs 操作集锦
1.C-k 的功能并不是剪切当前行,而是剪切当前行从光标到行末的内容. Emacs 中的剪切不叫剪切(cut),叫kill,复制(copy)不叫copy ,叫kill-ring-save (这个可以理 ...
随机推荐
- mysql Communications link failure Last packet sent to the server was X ms ago
想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: 就是这个异常(com.mysql.jdbc.exceptions.jdbc4.Communication***ception:Commun ...
- 吴裕雄--天生自然 PYTHON3开发学习:网络编程
# 导入 socket.sys 模块 import socket import sys # 创建 socket 对象 serversocket = socket.socket( socket.AF_I ...
- G. Petya and Graph(经典项目与项目消耗问题)(网络流)
题:https://codeforces.com/contest/1082/problem/G 题意:给定有边权和点权的图,问你选一些边,然sum边-sum点最大(点权被多次用为公共点只会减一次) 分 ...
- c# winform清空ie缓存的几种方法
很明显 IE的缓存在其目录中显示的并不是真正的文件所处的位置,文件的位置是在隐藏的文件夹中,而且这个隐藏的文件夹我们一般找不到.在网上几种清空缓存的方法,在此我一一把代码和处理的效果显示出来.供大家参 ...
- Django+ajax 返回json数据挨个显示在页面及页面和后台相互传值
通过Ajax传到后台一个值,根据该值返回数据库表中的某一列的值,然后逐个显示到页面,并且给每个加上超链接,可以进行点击查看详细信息 1.通过Ajax传到后台一个值,红色部分为往Django后台传值,蓝 ...
- maven多模块profiles的石使用
另外参考:https://blog.csdn.net/linhao19891124/article/details/73872303 maven中指定build一个project中几个特定的子modu ...
- Golang结构体值的交换
Golang结构体值的交换 一.添加结构体,多if暴力 最先遇到这个问题是在比编写PUT方法的接口时遇到. (我公司编写http put方法,是先解析json至StudentInput结构体中,通过i ...
- LeetCode No.106,107,108
No.106 从中序与后序遍历序列构造二叉树 题目 根据一棵树的中序遍历与后序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 示例 例如,给出 中序遍历 inorder = [9,3,15,2 ...
- The file named error_log is too large
The file named errorlog is too large */--> The file named errorlog is too large 1 Problem One day ...
- Python--继承、封装、多态
大概每个人在学生时代开始就使用Java了,我们一直在学习Java,但Java中总有一些概念含混不清,不论是对初级还是高级程序员都是如此.所以,这篇文章的目的就是弄清楚这些概念. 读完本文你会对这些概念 ...