emacs,传说中的神器啊;
http://blog.csdn.net/redguardtoo/article/details/7768233
Table of Contents
1 典型的工作流
- 在两个子窗口中对比文件内容
- 打开更多的窗口以参考其他信息.
- 对某个窗口内容比较有兴趣,跳转到该窗口,将该窗口最大化
- 看完最大化的窗口内容后,undo最大化操作,重新回到早先的多个小窗口模式以便继续纵览全局
2 将子窗口自动编号,然后按M-0…9跳转(最爱)
安装window-numbering.el,然后在.emacs中添加以下代码,
(require 'window-numbering) (window-numbering-mode 1)
3 undo/redo之前的窗口操作(最爱)
安装Winner Mode,然后在.emacs中添加以下代码,
(winner-mode 1) ;; copied from http://puntoblogspot.blogspot.com/2011/05/undo-layouts-in-emacs.html (global-set-key (kbd "C-x 4 u") 'winner-undo) (global-set-key (kbd "C-x 4 r") 'winner-redo)
8 移动焦点到上下左右的窗口(基本不用)
因我较喜欢vi快捷键,所以我安装了Evil Mode.快捷键和Vi一样.C-w h/j/k/l移动至各方向的子窗口.
9 存储/载入窗口布局到register(基本不用)
`C-x r w <register>`存储,`C-x r j <register>`载入.
http://wiki.woodpecker.org.cn/moin/EmacsPy
1. 用 Emacs 22 编写 Python 最初级指南
{{{Ben Luo <benluo@gmail.com> hide details 1:55 pm (25 minutes ago)
- 
reply-to python-chinese@lists.python.cn to python-chinese@lists.python.cn date Jul 27, 2007 1:55 PMsubject [python-chinese] 用 Emacs 写 Python 代码 
}}}
1.1. 缘起
因为要 ssh 做一些 server 管理的工作,平时又对编程有一点兴趣,公司的笔记本只能装 Windows. 所以要找一个可以在 GNU/Linux console 和 Windows 下面都可以用的编辑器。 原来是用 vim, 后来发现 Emacs 上有一个 nxml-mode 对 xml, xhmtl 的支持不错。所以转向 Emacs。 有很多人都说emacs难用,我觉得用多了还是很方便的。下面给一个非常基础的入门。
1.2. 配置 Emacs
1.2.1. Windows 下
在 My Computer 下设置 $HOME 参数。我的是 d:\home 将下面的配置保存到 d:\home\.emacs 中
我的 .emacs 文件
;; .emacs
(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(column-number-mode t)
 '(cua-mode nil nil (cua-base))
 '(current-language-environment "UTF-8")
 '(default-directory "~/" t)
 '(display-time-24hr-format t)
 '(frame-title-format "%b" t)
 '(global-font-lock-mode t nil (font-core))
 '(prefer-coding-system (quote utf-8-unix))
 '(rcirc-default-nick "benluo")
 '(safe-local-variable-values (quote ((TeX-master . t))))
 '(senator-highlight-found t)
 '(show-paren-mode t)
 '(transient-mark-mode t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )
;; Set load path
(setq load-path (append load-path '("~/.emacs.d/mmm-mode")))
(setq load-path (append load-path '("~/.emacs.d/cedet")))
(setq load-path (append load-path '("~/.emacs.d")))
;;set 下面的这个设置可以让光标指到某个括号的时候显示与它匹配的括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;(utf-translate-cjk-mode)
(set-buffer-file-coding-system 'utf-8)
;; deny tool bar
(tool-bar-mode -1)
;; deny temple file
(setq-default make-backup-files nil)
;; Chinese Font set up
(if (not (member '("-outline-Bitstream Vera Sans Mono-normal-r-normal-normal-14-*-96-96-*-*-fontset-chinese"
   . "fontset-chinese") fontset-alias-alist))
   (progn
     (create-fontset-from-fontset-spec
      "-*-Bitstream Vera Sans Mono-normal-r-normal-normal-14-*-96-96-*-*-fontset-chinese,
     chinese-gb2312:-outline-Arial Unicode MS-normal-r-normal-normal-*-*-96-96-*-*-gb2312*-*,
     chinese-big5-1:-outline-Arial Unicode MS-normal-r-normal-normal-*-*-96-96-*-*-big5*-*,
     chinese-big5-2:-outline-Arial Unicode MS-normal-r-normal-normal-*-*-96-96-*-*-big5*-*" t)
      (setq default-frame-alist
            (append
             '((font . "fontset-chinese"))
             default-frame-alist))
      )
)
;; recent file
(require 'recentf)
(recentf-mode 1)
;; Close Emacs start up dialuege
(setq inhibit-startup-message t)
;; set default major mode to text-mode
(setq default-major-mode 'text-mode)
;; set up user information
(setq user-full-name "Ben Luo")
(setq user-mail-address " benluo@linux.org.cn")
;; syantax highlight
(global-font-lock-mode t)
;; Make sure nxml-mode can autoload
(load "~/.emacs.d/nxml-mode/rng-auto.el")
;;--
;; Load nxml-mode for files ending in .xml, .xsl, .rng, .xhtml, .html
;;--
(autoload 'nxml-mode "nxml-mode" "xml editing mode" t)
(setq auto-mode-alist
     (cons '("\\.\\(xml\\|xsl\\|rng\\|xhtml\\|html\\|htm\\)\\'" . nxml-mode)
       auto-mode-alist))
(add-to-list 'auto-mode-alist '("\\.html\\'" . nxml-mode))
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . genricx))
(add-to-list 'auto-mode-alist '("\\.xml\\'" . nxml-mode))
 
;; tarbar
(require 'tabbar)
(tabbar-mode)
(global-set-key (kbd "") 'tabbar-backward-group)
(global-set-key (kbd "") 'tabbar-forward-group)
(global-set-key (kbd "") 'tabbar-backward)
(global-set-key (kbd "") 'tabbar-forward)
;; color-theme-aliceblue start
(require 'color-theme)
(color-theme-deep-blue)
;;(global-hl-line-mode 1)
;; complete switch buffer name
(require 'iswitchb)
(iswitchb-default-keybindings)
;;po-mode
(require 'po-mode)
;; pabbrev mode.
;;
(require 'pabbrev)
(setq pabbrev-idle-timer-verbose nil)
;;set type y instead of yes
(fset 'yes-or-no-p 'y-or-n-p)
;; End of .emacs
nxml-mode 大家可以在网上下载。
1.2.2. GNU/Linux 下
将上面的配置保存到 ~\.emacs 中。中文字体的设置与上面的不一样。
1.3. 使用 Emacs 基础
1.3.1. 打开文件
ctr-x 然后 ctr-f
1.3.2. 关闭文件
ctr-x 然后 k
1.3.3. 关闭 Emacs
ctr-x 然后 ctr-c
1.3.4. 保存文件
ctr-x 然后 ctr-s
1.3.5. 另存文件为
ctr-x 然后 ctr-w
1.3.6. 选择
ctr-@ 标记开始,然后用键盘移动光标到你想要的位置。 或者 用鼠标选择
1.3.7. 复制
alt-w
1.3.8. 剪切
ctr-w
1.3.9. 粘贴
ctr-y
1.3.10. 撤消
ctr-_
1.3.11. 移动到行头
ctr-a
1.3.12. 移动到行尾
ctr-e
1.3.13. 多个打开的文件间切换
ctr-x 然后输入 b, 然后输入你要切换过去的名字可以用"TAB"键补全
1.3.14. 分成上下两个窗口
ctr-x 然后输入 2
1.3.15. 分成左右两个窗口
ctr-x 然后输入 3
1.3.16. 两个窗口合并成一个窗口(不是内容合并)
ctr-x 然后输入 0
1.4. 为 python 使用 Emacs
1.4.1. 打开shell or command 窗口
alt-x 然后输入 shell
1.4.2. 打开python console
在python菜单中选择"start interpreter"
1.4.3. 缩进
在一行的任意地方用"TAB"键
1.4.4. 一次为多行做注释/反注释
注释,C-shift-2,然后选择多行,C-; 反注释,同上。
这些就是我日常用emacs写python的代码了。
1.4.5. 还可以用 Emacs 干什么
- 我写一点 html
- 用irc聊天
- 
传说,除了无法帮人修理自行车,Emacs 可以作一切!  
2. 反馈
修改 -- flyinflash [2010-01-11]
http://www.cnblogs.com/robertzml/archive/2010/03/24/1692737.html
学习Emacs系列教程(十):多窗口
首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。
在Emacs里面,一个框可以分割出多个窗口,多个窗口可以显示同一个或者不同Buffer,但是一个窗口只能属于一个Frame。一个窗口同时也只能显示一个Buffer,但是同时打开两个窗口也能显示一个Buffer的不同部分,这两个窗口是同步的,就是说如果在一个窗口中对Buffer做了修改,在另一个窗口中可以立即表现出来。但在一个窗口中移动光标之类的操作不会影响另一个窗口。多缓冲中有当前缓冲这个概念,同样对于多窗口也有当前窗口,对于当前选中的窗口其Mode Line相对于其它窗口颜色会深一些。
一、显示窗口
命令C-x 2 (split-window-vertically) 垂直拆分窗口,就是把一个窗口上下等分为两个,拆分出来的窗口默认是显示当前Buffer。可以多次使用这个命令,会把一个窗口不停的两等分。对应也有水平拆分窗口的命令C-x 3 (split-window-horizontally),这两个命令也可以混合使用,如果你屏幕够大画个迷宫出来也不是不可能的。拆分命令还可以加参数,比如M-5 C-x 2就是说上面那个窗口只占5行,其余的位置都给下面的窗口。
C-x o (other-window) 可以在多个窗口中切换,从上到下一个一个的来。使用参数来控制选中下面第几个窗口,想往回选的话参数设为负数。
C-M-v (scroll-other-window),用来滚动下一个窗口。
上一章我们看到有些命令加了C-x 4这个前缀,这一类命令都是用来操作多窗口的。
C-x 4 b bufname (switch-to-buffer-other-window) 在另一个窗口打开缓冲。
C-x 4 C-o bufname (display-buffer) 在另一个窗口打开缓冲,但不选中那个窗口。
C-x 4 f filename (find-file-other-window) 在另一个窗口打开文件。
C-x 4 d directory (dired-other-window) 在另一个窗口打开文件夹。
C-x 4 m (mail-other-window) 在另一个窗口写邮件。
C-x 4 r filename (find-file-read-only-other-window) 在另一个窗口以只读方式打开文件。
这一类的命令默认是垂直拆分窗口。
二、重排窗口
窗口排的密密麻麻看上去肯定不舒服,这时使用C-x 0 (delete-window) 来关闭当前窗口,需要注意的是窗口和缓冲是两个概念,关闭一个窗口对缓冲,或者我们正在编辑的文件没有任何影响。也可以使用C-x 1 (delete-other-windows) 关闭其它所有窗口。如果想连窗口打开的缓冲一并关掉使用C-x 4 0 (kill-buffer-and-window)。
我们还可以对窗口的大小做些改变:C-x ^ (enlarge-window)让窗口变得高点,C-x { (shrink-window-horizontally) 这个是把窗口变窄,变宽的话是C-x } (enlarge-window-horizontally) ,C-x - (shrink-window-if-larger-than-buffer)这个看字面意思就能理解,如果窗口比缓冲大就缩小点,C-x + (balance-windows)这个命令和前面那个没有任何关系是将所有窗口变得一样高。
最后再说一个在窗口中切换的命令,有时候窗口开的太多自己也记不住顺序,使用C-x o就会很麻烦。有一类命令能让你在上下左右切换当前窗口,M-x windmove-right 就是移到右边那个窗口,对应的"left","up“, "down",向四个方向都能移。
不知不觉写了十章了,虽然慢了点,但还坚持下来了,继续努力!
小结:
| 按键 | 命令 | 作用 | 
|---|---|---|
| C-x 2 | split-window-vertically | 垂直拆分窗口 | 
| C-x 3 | split-window-horizontally | 水平拆分窗口 | 
| C-x o | other-window | 选择下一个窗口 | 
| C-M-v | scroll-other-window | 滚动下一个窗口 | 
| C-x 4 b | switch-to-buffer-other-window | 在另一个窗口打开缓冲 | 
| C-x 4 C-o | display-buffer | 在另一个窗口打开缓冲,但不选中 | 
| C-x 4 f | find-file-other-window | 在另一个窗口打开文件 | 
| C-x 4 d | dired-other-window | 在另一个窗口打开文件夹 | 
| C-x 4 m | mail-other-window | 在另一个窗口写邮件 | 
| C-x 4 r | find-file-read-only-other-window | 在另一个窗口以只读方式打开文件 | 
| C-x 0 | delete-window | 关闭当前窗口 | 
| C-x 1 | delete-other-windows | 关闭其它窗口 | 
| C-x 4 0 | kill-buffer-and-window | 关闭当前窗口和缓冲 | 
| C-x ^ | enlarge-window | 增高当前窗口 | 
| C-x { | shrink-window-horizontally | 将当前窗口变窄 | 
| C-x } | enlarge-window-horizontally | 将当前窗口变宽 | 
| C-x - | shrink-window-if-larger-than-buffer | 如果窗口比缓冲大就缩小 | 
| C-x + | balance-windows | 所有窗口一样高 | 
| windmove-right | 切换到右边的窗口(类似:up, down, left) | 
 未完待续。。。
  未完待续。。。
http://www.cnblogs.com/robertzml/archive/2009/09/10/1564108.html
前言的前言:本人也是初学Emacs,之前对Vim也只接触了一点,所以也谈不上对哪个更喜欢,也分不出哪个更好。写这个教程的目的一是方便自己更好的学习Emacs,
二是没事找事。如果有专家路过还望多指点。
前言:大名鼎鼎的Emacs,传说中程序员的终极武器,已经跨越了文本编辑器,IDE的境界,可以替代操作系统GUI的东东。怀着一种膜拜的心情我决定开始学习Emacs,期望有一天也能成为一代Emacs大侠。
参考书目:
1. GNU Emacs Manual (Emacs 官网有下)
2. O'Relly Learning GNU Emacs, 3rd Edition
一、Emacs的安装使用
     学习软件的第一件事当然是把它下下来, http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.1-bin-i386.zip 目前最新版23.1,这个版本号够吓人的,Opera的10.0还不及别人的一半。本人不幸,使用的是Windows版本。
     安装过程异常简单,直接解压就行,但路径中不能包含空格,所以就表往Program Files文件夹下面丢了,我是直接放在根目录的,找起来也方便。运行bin目录下的addpm.exe可以添加开始菜单快捷方式。也可以直接运行runemacs.exe 来启动Emacs。
     卸载也很方便,Emacs不会对系统写任何垃圾东东,直接删除文件夹即可卸载,还有你的快捷方式。
     启动Emacs后的界面如下:
      猛的一看,没什么太出彩的地方,感觉比较简陋。上面依次是标题栏、菜单栏、工具栏,中间一大块就是编辑文本的地方,下面两行是mode line 和echo area。
      echo area是你输入命令和显示消息的地方。
      在mode line中第一个字符表示字符集,c代表chinese-gbk,后面那个 \ 符号表示换行类型,\是指DOS的CRLF换行,另外还有Unix的LF换行和Mac的CR换行。然后一个字符,表示打开的文件是否可写(先称为文件便于理解,实际上是buffer),%表示只读,- 和 * 表示可写。再一个字符表示文件是否已写,% 或 - 表示还没动,*表示已经更改。这两个字符组合起来有四个状态。
| 符号 | 表示 | 
| %% | 只读,未更改 | 
| -- | 可写,未更改 | 
| ** | 可写,已更改 | 
| %* | 只读,已更改 | 
     再后面一个 - 表示路径,后面黑体的 *GNU Emacs* 表示buffer的名称。后面的All表示光标的位置,当文件在一页就能显示完的时,这里是All,此外还有Top, Bot,以及当前位置百分比。L5表示第五行。Fundamental 是模式名,模式种类很多,这个以后介绍。
     如果是第一次使用,点击Emacs Tutorial,里面也有Emacs的一些基本介绍,而且是中文。
二、Emacs按键
     Vim 把控制和编辑分成了两个模式,单独操作,互不影响。而Emacs是同时进行编辑和控制,只不过控制命令需要使用控制键。
     Emacs的控制键就三个Control,Shift和 Meta,Control 和 Shift 键盘上都有,Meta 在美式键盘中就是Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有Alt (这个要某些欧洲人才会遇到)可以使用Esc 代替,另外Esc 不想Alt 通常当组合键用,它要单独按一下,再按另外的。
     以后控制命令就这样表示:    
     C-f       Ctrl+f
     C-M-f   Ctrl+Alt+f
     C-_    Ctrl+Shift+-
     Emacs中,这些组合键其实是一些函数的快捷方式,比如C-n 是next-line的快捷方式。我们除了使用组合键意外,还可以直接调用函数。
按下M-x,然后输入函数名就可以调用函数了。
三、进入退出Emacs
   进入前面已经说了,现在说怎么退出。
  最直接的办法,点右上角的叉,当然这个没什么技术含量。
      比较文明的方法,C-x C-c ,如果当前文件已经修改会问你是否保存。
  野蛮点的方法,调用函数kill-emacs,即M-x kill-emacs,直接退出,不管是否修改。
  不过直接退出后,Emacs会在相同目录下保留一个以#号开头结尾的相同文件名文件,下次启动可以使用M-x recover-file来恢复。如果是多次保存后,还会有个以~结尾的文件,保存了上次信息。
       教程的第一部分就写到这儿,虽然没有太多实际的东西,总算开了个头吧。
http://www.cnblogs.com/robertzml/archive/2009/09/14/1566435.html
 上回开了个头,简单的介绍了Emacs的一些基本常识,这回继续说基本常识,怎么移动你的光标。可能有人会说,这上下左右键不是很好用吗,还用你来讲。呶,Emacs的强大在于你能够只使用键盘左边那堆键来完成任何事情(不包括顶上的ESC和Function),这也是Emacs的设计宗旨。
  为了试验这些按键,大家在进入Emacs时选择页面中间的Emacs Tutorial,这里面可以随便乱按不用担心出什么岔子。
一、基本导航
  看下面这张图片:
  

  可以这么记,p-previous,n-next,b-backward,f-forward。这里所说的字符对于E文,就是一个字母,而中文是一个汉字,其实Emacs对中文支持还是很厚道的,后面慢慢可以看出来。不过在这儿我个人感觉这个光标移动没有Vim方便,别人就HJKL,一个键就能动了,这需要两个,Ctrl 有时还觉得按着很别扭,不太和谐呀。
  在按C-n 时,如果越过了页尾,不像一般Windows编辑器是往下滚一行,而是往下滚半夜,当前光标会置于页面中间。C-p 也是一样的。
  另外两个使用较多的是C-v 往下翻页,M-v 往上翻页。呃,还有一个C-l 就是把当前行提到页面中间,感觉Emacs对页面中似乎情有独钟啊。
二、中级导航
  按字符移的上节说了,然后说按单词移动:
  M-f 向前移动一个单词,Emacs理解的中文单词是两个标点符号之间的东西,所以中文就是移到下一个标点符号的位置。往回是M-b ,向后移动一个单词。
  C-a 移动到行首,C-e 移动到行尾。
  M-a 移动到句首,M-e 移动到句尾,在中文中一般就是跑到句号的位置,这里我不得不说一下,现在很多年轻人写文章有一逗到底的习惯,就只在文章最后加个句号,如果用Emacs来看你的文章,一个M-e 啥都不用干了。作为一个有一定文学素养的人,在此我严厉反对这种写文章的作风,不和谐。
  M-} 移动到下一段, M-{ 移动到上一段。
  还有两个跑的更快的导航,M-< 移到文档首,这里要注意是小于符号<,不是逗号, ,所以我们是按Alt + Shift + ,  切记。移到文档尾是M->。
  C-x [ 和 C-x ] ,分别是往上一页和往下一页。这里页是由分页符控制的,在Emacs Tutorial 中是没有分页符的,所有这两个键会跑到文档头和文档尾去。
  例图:

  阴影处是当前光标的位置,其它箭头所指是按相应键后光标的位置。
三。高级导航
  可以这么来看基本导航是普通人用的,中级导航是高手采用的,高级导航是砖家、叫兽用的。
  M-r 移动到页面中间行首位置,holly shit,又是页面中间,真XX阴魂不散。
  M-x goto-char (n),这个比较复杂,先按M-x,然后空格输goto-char回车,另外Emacs有Tab键补全功能,大家可以试试,如果有多个选项会有提示,最后输入一个整数。这个东西会移动到从头数第n个字符的位置,我估计不会有人变态到能记住每个字是第几个字符。
  M-g M-g [n],按两次M-g,不用回车,提示输入一个数字,移动到指定行n,两个M-g,也可以输M-g g 。
  还有一个比较罕见的,C-x C-n, 这个是设置当前列为目标列。这是什么意思呢,本来我们按C-n 和C-p 时,光标会往下或往上移一行,而列的位置就是当前光标列的位置,除非下一行列没那么多(就是字符没那么多),光标会到距当前列最近的列。而我们可以用这个组合键重新设一个目标列,这样在按C-n 和C-p 时,光标会跑到我们设的目标列上。如果你不幸按了,而且又不习惯,可以使用C-u C-x C-n 来取消目标列设置。补充一点,这两个命令都是禁用命令,是Emacs考虑大家多半不会用,而且比较怪的命令,所以通常就禁用了,你不小心调出时会给出提示问你是否需要继续。就像这个样子:

  大家按个空格稍微试下就行了。
  最后还有两个重复命令:
  M-n, n是数字,意思是重复下个命令n次,比如M-3 C-f,就是向前移三个字符。
  C-u n,n还是数字,也是重复下个命令n次。 如果省略n,就是4次。按两次C-u,就是重复16次。
小结:
| 按键 | 命令 | 作用 | 
|---|---|---|
| C-f | forward-char | 向前一个字符 | 
| C-b | backward-char | 向后一个字符 | 
| C-p | previous-line | 上移一行 | 
| C-n | next-line | 下移一行 | 
| M-f | forward-word | 向前一个单词 | 
| M-b | backward-word | 向后一个单词 | 
| C-a | beginning-of-line | 移到行首 | 
| C-e | end-of-line | 移到行尾 | 
| M-e | forward-sentence | 移到句首 | 
| M-a | backward-sentence | 移到句尾 | 
| M-} | forward-paragraph | 下移一段 | 
| M-{ | backward-paragraph | 上移一段 | 
| C-v | scroll-up | 下移一屏 | 
| M-v | scroll-down | 上移一屏 | 
| C-x ] | forward-page | 下移一页 | 
| C-x [ | backward-page | 上移一页 | 
| M-< | beginning-of-buffer | 移到文档头 | 
| M-> | end-of-buffer | 移到文档尾 | 
| M-g g n | goto-line | 移到第n行 | 
| (none) | goto-char | 移到第n个字符 | 
| C-l | recenter | 将当前位置放到页面中间(Emacs最喜欢的地方) | 
| M-n | digit-argument | 重复下个命令n次 | 
| C-u n | universal-argument | 重复下个命令n次,n默认为4 | 
注:这里命令这列就是按了M-x后输的东东。
http://www.cnblogs.com/robertzml/archive/2009/09/23/1571942.html
 上回说到怎么在Emacs中移动光标,这回将介绍如何在Emacs中编辑文本。
任何一款文本编辑软件的核心功能当然就是编辑文本,Emacs也不例外,虽然它也有许多其它强大的本领,但都离不开文本编辑。闹,文本编辑说白了也就是打字,专业点说我们需要实现一种所见即所得输入方式。在Emacs中打字和Notepad中没什么区别,一样也是打开一个文件直接往里面敲字符就可以了,中文也行。这个和Vim区别比较大,我们还需要知道自己是在哪个模式下,不然乱敲一气也不见屏幕有什么反应。
一、文件操作
  刚才我们说到编辑文本就是打开一个文件往里面敲字符,所以我们第一件事就是打开一个文件。
  C-x C-f 输入这个命令后在回显区会看到一个提示“Find file: ”,然后是我的文档的路径,这时需要输入你编辑的文件的名称。注意,这里的输入的文件名可以包含路径,比如 D:\text.txt,或者是相对路径。还有就是在Windows中我们可以使用Windows风格的反斜杠"\",当然了也可以使用正斜杠"/"。如果输入了一个新的路径,Emacs的当前路径会跳转到你输入的地方,(实际上是新开了一个buffer)。如果Emacs没找到你输入的文件,它会以你输入的名字自动新建一个文件。另外Emacs还支持拖拽,就是说可以把文件图标拖到Emacs中来打开它。
  当你不小心错打开一个文件时,可以使用C-x C-v 来换一个,操作和C-x C-f 一样,这个区别嘛是Emacs在buffer中处理有些不同。
  C-x C-s 这个命令是用来保存文件的,另存是C-x C-w ,这两个都比较简单,一看就会。
二、输入文本
  除了一些基本的输入方式,Emacs还可以输入非打印字符,就是ASCII表中前面的那些字符。
  使用C-q (n), 这里的n代表一个八进制数,就能打出n对应的ASCII表中的符号。
  还有就是Unicode字符比如日文啊韩文啊,使用C-x 8 后面接Unicode标准中字符的名字或者编码就可以输出这个乱七八糟的东西了。这我相信不会有谁闲的无聊来记这种一长串数字的,而且我们有更为先进的方案,(广告时间)当。。当。。当。。,现在隆重推出Unicode字符超级输入工具——搜狗软键盘,省去了你记忆一大堆16进制数的烦恼,还能输入中文,实在是居家旅行必备良品。
三、删除文本
  相比输入,Emacs删除文本的花样就比较多了。
  Backspace,退格键,这个比较传统就不说了。
  Del键,删除光标处的字符,虽然这个也很常见,但它违背了Emacs的原则,“你的手不用离开主键盘区”,所以我们用C-d来代替。
  M-d ,这个用来删除一个单词(记住在中文中单词表示两个相邻标点符号中的句子,所以如果你是打中文这个键还是少用,稍不留神多长一截句子就不见了)。而且它删除的是从光标当前位置到单词结束,还会把单词前半截留给你。
  相对应,删除单词前半截可以用,M-Backspace。
  M-k, 删除一段句子,这个在中英文有些不同。中文里面它只会删除到句号为止,包括句号。而英文中,它不认'.', '!‘,这些东西,而是把整段都删了(英文的分段用两个回车表示)。和M-d一样,它也是从光标处开始删。对应删回去是C-x Backspace。
  C-k, 从光标起删除当前行。
  一个比较详细的例子见下图:(宽线覆盖的文字就是使用箭头指向的命令删除的部分,注意中英文的区别)

四、撤销命令
  操作难免有失误之处,Windows里面Ctrl + z 命令使用频率也是蛮高的,不过在Emacs中按Ctrl + z 会发现窗口最小化了。Emacs中要达到撤销效果使用的是 C-/ ,同样还可以使用 C-_ 或者 C-x u ,这三个都对应的是Undo命令。
  和Vim 类似,Emacs中删除的内容也保存在一个缓冲中,相当于一个剪贴板,我们可以很方便的调出某一次放进去的东西,这个地方我还没仔细看,放到以后再讲。
  上面说的是撤销文本上的操作,还有个比较常用的命令C-g ,这个是用来撤销命令的,当你输了一半命令发现不对就可以用它了。
五、一些杂项命令
  有些比较零碎的命令又比较常用,呃,其实应该放到第一章的,先搁在这儿吧。
  帮助命令:
  C-h t 调出Emacs Tutorial。
  C-h r 调出Emacs Manual。
  C-h k (command) ,调出对应command的帮助,比如C-h k C-n 就是查看C-n的帮助。
  空白行:
  插入空行,C-o 。删除空行C-x C-o ,注意,如果有许多空行时,这个命令会删的只剩一个空行,只有一个就直接删了。这两个命令并不是完全对应,插入空行实际是插入一个回车换行符,而删除空行的标准是这一行什么文字都没有才删了,如果我们在一行文字中间按C-o,光标后面的内容会移到下一行,再按C-x C-o 却没有反应,因为这行前面还有内容。
  重复命令:
  上章介绍两个数字参数的重复命令,这儿还有一个不带数字参数的。C-x z ,这个命令的对象是它前面输的命令,比如,先按C-n ,再按C-x z,就会重复一次C-n,然后我们每按一次 z, 就再往下走一行,相当方便。
小结:
| 按键 | 命令 | 作用 | 
|---|---|---|
| C-x C-f | find-file | 打开文件 | 
| C-x C-v | find-alternate-file | 打开另一个文件 | 
| C-x C-s | save-buffer | 保存文件 | 
| C-x C-w | write-file | 另存文件 | 
| C-q (n) | quoted-insert | 插入字符,n表示字符的八进制ASCII码 | 
| C-x 8 | ucs-insert | 插入Unicode字符 | 
| C-d | delete-char | 删除光标处字符 | 
| Backspace | delete-backward-char | 删除光标前字符 | 
| M-d | kill-word | 删除光标起单词 | 
| M-Backspace | backward-kill-word | 删除光标前单词 | 
| C-k | kill-line | 删除光标起当前行 | 
| M-k | kill-sentence | 删除光标起句子 | 
| C-x Backspace | backward-kill-sentence | 删除光标前句子 | 
| (none) | kill-paragraph | 删除光标起段落 | 
| (none) | backward-kill-paragraph | 删除光标前段落 | 
| C-/  | undo | 撤销 | 
| C-_ | undo | 撤销 | 
| C-x u | undo | 撤销 | 
| C-g | keyboard-quit | 撤销命令 | 
| C-h t | help-with-tutorial | 调出Emacs Tutorial | 
| C-h r | info-emacs-manual | 调出Emacs Manual | 
| C-h k (command) | describe-key | 查看对应command帮助 | 
| C-o | open-line | 插入空行 | 
| C-x C-o | delete-blank-line | 删除空行 | 
| C-x z | repeat | 重复前个命令 | 
 未完待续。。。
 未完待续。。。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号