Skip to content
fancyoung edited this page Feb 26, 2014 · 50 revisions

Shortcuts

说明: C-* (Ctrl组合键), M-* (Alt组合键), <SPC> (空格键), <RET> (回车键), <DEL> (退格键(不是Delete删除键))。 注意大小写。

常用

C-x h 全选
M-; 加注释
M-. ctags查找(需要安装ctags)
F5 a M-y 显示复制历史(anything)
C-M-<SPC> 往后选中单词,但鼠标位置不变
C-M-k 删除单词(与M-k类似)
C-l 当前行到屏幕中间
M-r 在当前页面上中下转换(前加C-u 可控制行号)
C-M-(n/p) 段落跳转
C-h r 帮助教程
M-! shell
C-u M-! shell输出到当前窗口
C-@ region,进入选择(mark)模式
C-x C-x 在mark前后跳转
C-q C-j 回车
C-x l 查询当前行+文件行数
C-x C-= 放大字体,可连续按C-=(=其实是+键)
C-x C– 缩小字体,可连续按
C-x C-0 恢复原字体
M-x find-name-dired 批量替换目录里文件内容
M-x revert-buffer reload当前文件

自定义

C-c C-c 全局搜索文件
C-c <SPC> 空格显示开关
C-c n 清除buffer
C-x ^ 合并到上一行
C-F1 hs-minor-mode模式里折叠展开切换
C-F10 开关菜单
C-c C-\ goto-last-change

更多

M-x delete-trailing-whitespace <RET> 删除行尾空格
M-x org-mode 进入结构化编辑模式org-mode
M-x cua-mode 进入列编辑模式cua-mode
M-x hs-minor-mode 进入折叠/展开模式hs-minor-mode
M-x linum-mode 显示行号
M-x viper-mode vim模式
M-x dired / C-x d 进入目录模式
F5 C-h 打开anything的帮助
M-x woman 看man的工具(with out man)
M-x count-matches 匹配的数量
M-x replace-regexp 正则替换
M-x ediff 对比文件
M-x ediff-buffers 对比buffer里的文件
M-x replace-string RET C-q C-m RET RET 全文替换 ^M(win换行符)
M-x erc-select 进入ERC(IRC工具)
M-x flush-lines ^$ 删除空行(“^$”为正则匹配空行)

窗口操作

C-x 2 垂直拆分
C-x 3 水平拆分
C-x o 到下一窗口
C-M-v 滚动下一窗口
C-x 4 b 在另一窗口打开缓冲
C-x 4 C-o 在另一窗口打开缓冲,但不选中
C-x 4 f 在另一窗口打开文件
C-x 4 d 在另一窗口打开文件夹
C-x 0 关闭当前窗口
C-x 1 关闭其它窗口
C-x 4 0 关闭当前窗口和缓冲
C-x ^ 增高当前窗口(不能用?)
C-x { 将当前窗口变窄
C-x } 将当前窗口变宽
C-x - 如果窗口比缓冲大就缩小
C-x + 所有窗口一样高

大小写

M-c 首字母大写
M-u 词大写
M-l 词小写

#org-mode

链接(格式为[ [ link ] [ description ] ])

C-c C-o 跳到相应链接
C-c & 回跳

输出

C-c C-e h 输出org为html

矩形操作

  • 可以进入#cua-mode
M-x cua-mode 进入列编辑模式
C-<RET> 开始选择,用Enter键在四个角切换
  • 或者通过`C-<SPC>`或`C-@`标记起始位置,然后移动到结束位置
C-x r k 剪切一个矩形块
C-x r y 粘贴一个矩形块
C-x r o 插入一个矩形块
C-x r c 清除一个矩形块(使其变成空白)
C-x r t 在选定区域的所有列前插入样的字符

dired-mode

C-x d 进入目录模式(同M-x dired)

标记文件

m 标记文件
u/U 去除标记/all
t 标记互换

操作文件

R 文件重命名/移动
C 复制文件
+ 创建目录

访问

v 以view查看(按q退出)
\^ 访问父目录
q 退出缓冲

折叠/展开 #hs-minor-mode

M-x hs-minor-mode 进入模式
C-c @ C-h 折叠(block hide)
C-c @ C-s 展开(block show)
C-c @ C-M-h 全部折叠
C-c @ C-M-s 全部展开
C-c @ C-l 折叠同级(hide level)
C-c @ C-c 切换(toggle hidding)

立即更新Emacs配置(任选其一)

C-x C-e 更新光标前一条语句
M-x eval-last-sexp 使.emacs中光标前的那一条语句立刻生效。
M-x eval-region 使.emacs中选中的region中的语句立刻生效。
M-x eval-buffer 使当前的buffer中的设置语句立刻生效。
M-x load-file ~/.emacs 载入.emacs文件,从而使其中的设置生效。

插件

rinari (for rails)

C-c c controller
C-c m model
C-c v view
C-c h help
C-c r rspec
C-c j javascript
C-c s stylesheet
C-c f file(不常用,现在一般用C-c C-c)

yari (ruby帮助)

C-c C-q 查当前词
C-c C-a 搜索

magit (for git)

C-c g 进入操作界面
\$ process?
g reload
s/S stage/all
u/U unstage/all
c comment
C-c C-c commit
P push
F pull
l log
w 显示当前分支与其它分支的关系

psvn (for svn, 左下角有红/绿灯来显示文件当前状态)

C-x v l 查看log
C-x v = 查看已做的修改
C-x v v commit
C-x v u 放弃修改
M-x svn-status 进入svn-status-mode

搜索(Search)

C-(s/r) 向下(上)进行增量搜索,(按回车进入普通搜索)
C-s C-w 搜索当前光标所在词

批量搜索文件夹内文件

方法1(仿佛不能处理子文件夹)
  1. C-x d 进入文件夹模式,并指定路径
  2. 在文件列表中通过 mu 对文件进行标记和取消
  3. 执行 Q ,并分别输入替换前后的文字
方法2 #find-name-dired
  1. M-x find-name-dired
  2. 选择相应目录
  3. 可以按 t 来选中所有文件
  4. Q ,分别输入替换前后的字符串
  5. 用空格键确认修改,用 n 键跳到下一个

参考: http://stackoverflow.com/questions/270930/using-emacs-to-recursively-find-and-replace-in-text-files-not-already-open

其它

  1. Emacs远程SSH编辑文件