注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

转载:学习GNU Emacs  

2008-11-18 12:41:36|  分类: L-Emacs |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

学习GNU Emacs

作者:夏武

1 GNU Emacs介绍

Emacs编辑器是最受欢迎、传播范围最广、也是最强大和最灵活的UNIX文本编辑器。与其他文本编辑器的重要区别在于它是一个完备的工作环境,使用 Emacs可以完成各种日常工作。对很多Emacs用户来说,Emacs已经超越了编辑器的范畴,使用Emacs是一种文化,一种生活。 GNU Emacs是GNU开发的Emacs变体,也是最广泛使用的Emacs编辑器。本文将以GNU Emacs为例讲解GNU Emacs编辑器的使用和技巧。首先介绍一下常用的快捷键,接着介绍GNU Emacs扩展,最后是.emacs文件的配置。

2 快捷键

GNU Emacs的快捷键都是绑定于CTRL键和ALT键上。每个快捷键对应一个指令名称,也就是一个对应的函数名称,这允许你根据不同的喜好将快捷键绑定到不同的指令名称。另外,在Emacs中有很多的指令没有绑定快捷键,我们可以通过M-x 指令名称来执行指令。例如,全文替换我们可以使用M-x replace-strings。这样,很多没有绑定快捷键的功能都可以用到了。

2.1 基本操作

表1是基本操作指令列表。

表1 基本操作指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-SP set-mark-command 设置标记 C-q quoted-insert 插入引用
C-a beginning-of-line 移动到行首 C-r isearch-backward 向前查找
C-b backward-char 向前移动一个字符 C-s isearch-forward 向后查找
C-t transpose-chars 掉换前后二个字符位置 C-d delete-char 删除一个字符
C-e end-of-line 移动到行尾 C-v scroll-up 向下滚动一屏
C-f forward-char 向后移动一个字符 C-w kill-region 删除选定区域
C-x < scroll-left 向左移动一屏 C-x > scroll-right 向右移动一屏
TAB forward-button 缩进 C-y yank 粘贴
C-z suspend-frame 暂停emacs C-n next-line 移动到下一行
C-k kill-line 删除一行 ESC ESC-prefix 取消前缀
C-o open-line 增加一行 DEL delete-backward-char 向前删除一个字符
C-p previous-line 向上移动一行 C-z suspend-emacs 暂停Emacs
C-_ undo 取消 C-l recenter 使光标所在行变为屏幕中央

2.2 帮助

表2是帮助指令列表。

表2 帮助指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-h w where-is 查看命令菜单位置或者绑定热键 C-h k describe-key 查看热键详细功能描述
C-h t help-with-tutorial 查看Emacs教程 C-h c describe-key-briefly 查看热键简单功能描述
C-h n view-emacs-news 浏览Emacs新闻 C-h b describe-bindings 查看绑定热键
C-h m describe-mode 查看编辑模式 C-h C-c
查看许可证信息
C-h ? help-for-help 查看帮助列表


2.3 缓冲区操作

表3是缓冲区操作指令列表。

表3 缓冲区操作指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-x C-d list-directory 列出当前目录 C-x = what-cursor-position 显示当前光标所在位置
C-x C-f find-file 查找文件 C-x TAB indent-rigidly 强制缩进
C-x C-o delete-blank-lines 删除空白行 C-x b list-buffers 打开另外一个缓冲区
C-x C-p mark-page 全选 C-x C-r find-file-read-only 以只读方式打开文件
C-x C-s save-buffer 保存当前缓冲区 C-x i insert-file 插入文件
C-x C-t transpose-lines 掉换前后行位置 C-x h mark-whole-buffer 标记当前全部缓冲区
C-x C-v find-alternate-file 打开另外一个文件,关闭缓冲区 C-x l count-lines-page 计算当前缓冲区行数
C-x C-w write-file 保存缓冲区内容到文件 C-x k kill-buffer 关闭缓冲区
C-x m mail 写Email C-x 4 m mail-other-window 打开新窗口写Email
C-x s save-some-buffers 保存多个文件 C-x u advertised-undo 取消上一步操作

2.4 宏操作

表4是宏操作指令列表。

表4 宏操作指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-x ( start-kbd-macro 开始录制宏 C-x ) end-kbd-macro 结束宏录制
C-x e call-last-kbd-macro 执行上一次绑定的宏命令


2.5 窗口操作

表5是窗口操作指令列表。

表5 窗口操作指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-x 0 delete-window 关闭当前窗口 C-x 1 delete-other-windows 保留当前窗口,关闭其他窗口
C-x 2 split-window-vertically 水平分割窗口 C-x 3 split-window-horizontally 垂直分割窗口

2.6 C语言编程模式

表6是C语言编程模式的指令列表。

表6 C语言编程模式指令

快捷键 指令名称 用途 快捷键 指令名称 用途
M-a backward-sentence 移动到语句开头 M-e forward-sentence 移动到语句结尾
C-M-a beginning-of-defun 移动到函数开头 C-M-e end-of-defun 移动到函数结尾

2.7 SGML语言编程模式

表7是SGML语言编程模式指令列表。

表7 SGML语言编程模式指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-c C-t sgml-tag 插入标记 C-c C-a sgml-attributes 插入属性
C-c C-b sgml-skip-tag-backward 移动到前一个标记 C-c C-f sgml-skip-tag-forward 移动到后一个标记
C-c DEL sgml-delete-tag 删除一个标记


2.8 版本控制命令

表8是版本控制指令列表。

表8 版本控制指令

快捷键 指令名称 用途 快捷键 指令名称 用途
C-x v d vc-directory 列出目录下修改过的文件 C-x v = vc-diff 显示改动
C-x v l vc-print-log 显示改动历史记录 C-x v i vc-register 加入文件到版本控制中
C-x v h vc-insert-headers 插入版本控制信息 C-x v r vc-retrieve-snapshot 取某一版本文件
C-x v v vc-next-action 进入提交改动状态


3 GNU Emacs扩展

3.1 Emacs Lisp语言介绍

3.2 有用的GNU Emacs扩展

3.3 写一个GNU Emacs扩展

这里我们自己动手写一个GNU Emacs扩展,实现复制一行的功能。下面是实现这个扩展的代码。

(defun copy-line (&optional arg)
"Save current line into Kill-Ring without mark the line"
(interactive "P")
(let ((beg (line-beginning-position))
(end (line-end-position arg)))
(copy-region-as-kill beg end))
)
将上面这段代码拷贝到.emacs中,就可以开始使用这个功能了。

4 .emacs文件

4.1 样例

;;显示时间
(display-time)
;;显示行号
(column-number-mode t)
(show-paren-mode t)
;;设置TAB宽度为4
(setq default-tab-width 4)
;;以下设置缩进
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c-brace-offset -4)
(setq c-argdecl-indent 4)
(setq c-label-offset -4)
(setq c-basic-offset 4)
(global-set-key "\C-m" 'reindent-then-newline-and-indent)
(setq indent-tabs-mode nil)
(setq standard-indent 4)

;;开启语法高亮。
(global-font-lock-mode 1)

;;设置默认工作目录
(setq default-directory "/home/test/source/")

;; 去掉滚动条
(set-scroll-bar-mode nil)

;;关闭开启画面
(setq inhibit-startup-message t)
(setq indent-tabs-mode t)

;;不产生备份文件
(setq make-backup-files nil)

;;设置自定义变量
(custom-set-variables
'(column-number-mode t)
'(current-language-environment "UTF-8")
'(display-time-mode t)
'(ecb-options-version "2.32")
'(mouse-1-click-in-non-selected-windows t)
'(mouse-drag-copy-region t)
'(mouse-yank-at-point t)
'(save-place t nil (saveplace))
'(show-paren-mode t)
'(transient-mark-mode t))
(custom-set-faces
;;选择小工具栏图标
(tool-bar-mode -1)

5 总结

6 参考资料

  评论这张
 
阅读(675)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017