C-h t 阅读 Emacs 教程──意思就是说按住 control,再按 h,松开 control,然后再按 t。(或者,你可以使用鼠 标从 Help 菜单重选择 Emacs Tutorial)。

  幸运的是,很容易学习键组合。因为菜单每个项目的后面都标示了对应的键组 合。我的建议就是,首先使用菜单项,比如,打开一个文件,直到你明白了其中的奥 妙,并且可以自信的使用这个菜单项,再尝试使用 C-x C-f。当你一点困难也没有的 时候,就可以转到下一个菜单项继续练习。

  如果记不住一个特殊的键组合到底能做什么,可以从 Help 菜单中选择 Describe Key ,然后输入这个键组合──Emacs 会告诉你它到底能干什么。你也可以点击 Command Apropos来寻找包含一个特定词的命令, 后面紧跟的就是键组合。

M-x replace-s RET foo RET bar RET”)的意思就是按住 Meta 键,按下 x 键,松开 Meta 键,输入 replace-s (replace-string的简写 ──Emacs 另一个特性就是命令的缩写),按下 return键,输 入 foo(你要替换的字串),输入 bar (你要用来替换 foo

 

 

1, 常用命令


启动和退出

Linux 用户键 入 emacs & 就可以了。

退出 Emacs 按 C-x C-c (就是 Ctrl+x 接着按 Ctrl+c)--Ctrl+x, 放开x,接着按下c就可以了。


打开和保存文件

启动 Emacs 后,按 C-x C-f,minibuffer (就是 Emacs 最下面一条) 会提示路 径,你可以在这里输入路径名和文件名,或者回车看到这个目录列表。可以 用方向键移动光标到文件名上回车打开文件,或者在子目录上进入子 目录,在.. 上进入上一层目录。

打开文件后像往常一样编辑,随便按字母键输入一些字符。按C-x C-s 保存文件。按C-x k 回车关闭这个 buffer。

C-x C-w明确的把它写到文件中


Emacs 中的文件管理

Emacs 不仅仅是一个文本编辑器,它还可用于文件管理。使用 Emacs 作为文件管理工具的话,也解决了跨平台问题,这样在不同平台下,你都可以使用一套工具来管理文件。



    

文件管理

基本命令

Ctrl + x  d  : 打开文件管理视图,在文件管理视图中支持的操作如下表:
键值效果    Enter打开文件a打开文件并关闭文件管理视图o 打开文件,但是在一个新建视图中打开q 关闭文件管理视图C(大写)复制文件R(大写)重命名文件D(大写)删除文件

  文件管理基于文件集合的命令

这主要是使一条命令作用于几个文件。方法是标记你要操作的文件。
基本命令为 m

键值 效果    m标记文件u去掉标记U标记所有文件t反向所以文件% m基于正则表达式,标记文件

文件管理其他相关命令
在文件管理视图中还可以做到:
键值效果    g刷新文件夹^返回上级目录+创建一个文件夹Z 压缩或解压文件

 

 

  

小结:按键说明

这 里可以看到很多 C-x 开头的组合键,这些通常都是 Emacs 预先定义,全局性 的命令。

按了 C-x 不动(注意,此时会放开x,继续按着Ctrl),一秒钟后minibuffer 提示 C-x- ,表示 Emacs 正在 等待用户按下一个键。

如果你想取消这次按键,可以接下去按 C-g,minibuffer 提示 C-x C-g is undefined 也就是说 Emacs 什么都没有执行。C-g 一般都是取 消命令,取消按键。如果按了 C-x C-h 就会出现一个帮助 buffer,里面是以 C-x 开头的按键帮助。C-h 是一个帮助按键。如何获得更多的帮助,会在之后的 小节介绍。C-c 开头的按键通常是用户自定义的按键和扩展包或扩展模式定义的 按键,同样也可以获得帮助信息。



 

 


选定区域,剪切、复制、粘贴

好了,到现在为止你大概一共花了 10 分钟吧。

你 可以用鼠标拖选一块区域。当然,最好用键盘。按 C-@,minibuffer 提示 Mark set,设定了一个 mark。然后移动光标,这时候你就选定了光标和 Mark 之 间的区域。什么都看不到?你可以按 C-w,这块区域就消失了,C-w 是剪切。按 C-x u 可以撤销上一次的剪切,C-x u 是取消。你肯定想看到你到底选中了哪块 区域,可以按M-x 然后输入 transient-mark-mode ,回车。这次你就可以看到你 选中了哪块区域了。M-x 是执行 Emacs 命令。

Emacs 有一个很有用的功能,在你选定了区域之后按 C-x C-x 可以交换光标 (point) 和 Mark 的位置,这样你就可以修改调整你选定的区域了。

按 C-g 取消选定的区域。

重新用 C-@ 选定一块区域,按 M-w,这是复制,移动光标到别处,按 C-y,这是 粘贴。紧接着再按一次 M-y,这时可以看到粘贴的内容变成了上一次剪切的内容。 再按 M-y 又变成之前一次复制的内容。

C-k 可以剪切一行。连续的 C-k 会把剪切的内容放在一起,一次 C-y 就可以把 之前的 n 行一起贴上。

C-x u 可以撤销,不过这个撤销和常规 windows 程序的撤销不太一样。按了 C-x u 撤销后,如果移动一下光标,再按一次 C-x u,可以撤销之前的撤销命令。 这样相当于是 redu。

小结:

  • C-@ 选定区域
  • C-w 剪切
  • M-w 复制
  • C-y 粘贴
  • M-y 粘贴剪贴板之前的内容
  • C-k 剪切一行
  • C-x u 撤销



查找

按 C-s 是查找, minibuffer 提示 I-search: 接下来你可以输入你要找的词,比如想找 windows, 输入 w,Emacs 开始找到 w,光标移动到 w 上,接着输入 i,Emacs 找到 wi, 并注意到Emacs 会同时高亮所有的 wi,接着输入 n,Emacs 找到 win,等等。这 就是 incremetal search,它的好处是,你想要找 windows,但实际上你只要输 入 win 就能定位到 windows 上了,不需要继续输入 dows 了。

继续按 C-s 找下 一个匹配的。C-r 往回查找。

按回车或者方向键结束本次查找,再按两次 C-s 重 复上次查找,按C-g 取消查找,光标回到原处。

C-s 或 C-r 也可以用作光标定位,比如想要移到前面 Emacs 处,就可以 C-r Emacs,效率很高,可以说是指哪打哪。

如果查找输入的全是小写,那么这次查找是大小写不敏感的,如果输入字符中有 大写字母,那么这次查找就是大小写敏感的。很智能吧。

C-M-s 或 C-M-r 是正则表达式查找。或者在 C-s 之后按 M-r 也可以切换到正则 表达式查找。这里不仔细讲 Emacs 的正则表达式是怎么样的。那样会多花一个小 时。

 


替换

M-% 是 query-replace,输入查找内容和替换内容,然后 Emacs 会询问是否要 替换,y 替换,n 不替换,! 替换光标之后所有,q 结束,? 可以得到帮助。

Emacs 的替换有一个很好的特性,可以只在选定区域内进行替换。这样就可以放 心大胆地使用 ! 替换所用,而不用担心超出范围了。

C-M-% 是正则表达式的替换。

小结:

  • C-s 和 C-r 向前向后查找
  • C-% 替换   M-%   替换
  • C-M-s 和 C-M-r 向前向后正则表达式查找
  • C-M-% 正则表达式替换



寻求帮助

Emacs 提供了极其强大的帮助系统。

C-h t 是一个 tutorial,现在也有不同语言的 tutorial。按 M-x 输入 help-with-tutorial-spec-language 可以选择不同的语言。按 Emacs 可 以帮你补全命令。按两次 会有补全的提示。

C-h a 是 apropos command,你可以输入几个简单的单词,Emacs 可以帮你找到 相应的命令,这个帮助非常好用。比如你想把一个单词全部大写,但不知道该怎 么做,可以 C-h a 输入 upcase word 或者 up word,Emacs 就会找到几个命令, 其中一个是 upcase-word,并且对应的按键是 M-u,你只要把光标移动到单词前 按 M-u 就可以了。

C-h k 是描述某个按键会执行什么。例如你要看看 M-; 是干什么的,按 C-h k, 接着按 M-; 你就会看到 M-; 会运行 comment-dwim,dwim 是 do what i mean 的缩写,这个命令会注释或反注释你选定的区域,如果没有选定区域,会在这一 行后面加上注释。很聪明的命令吧。

C-h c 简单描述某个按键执行什么。

C-h f 描述某个函数

C-h v 描述某个变量

C-h 会提供很多很多帮助信息,C-h ? 会显示有哪些帮助信息。


C-h C-h   给出帮助信息;  --》》C-h b 所有绑定的快捷键;


 

  


Emacs窗口管理几个好东东

windmove是不是窗口多了之后,C-x o 跳得很累?是不是羡慕那些vim用户可以指明跳到上下左右的窗口(^WJ, ^WH...)?   那就用windmove吧。

Emacs自带这个包,只要在你的.emacs中加入:


(windmove-default-keybindings)

然后就可以用S-<up>、S-<right>跳转到上面、右边的窗口了。

如果你用shift-selection-mode或者cua-mode,那么不想用Shift来做窗口跳转的话,将上面的配置改为:


(windmove-default-keybindings 'meta) 或者 (windmove-default-keybindings 'super)