Chinaunix首页 | 论坛 | 博客
  • 博客访问: 646973
  • 博文数量: 121
  • 博客积分: 4034
  • 博客等级: 上校
  • 技术积分: 1439
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-28 12:42
文章分类

全部博文(121)

文章存档

2017年(8)

2016年(10)

2013年(2)

2012年(3)

2011年(18)

2010年(80)

分类: LINUX

2010-11-28 17:49:59

emacs使用大全

emacs命令
Emacs 启动:
直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,
就用 emacs -nw      (No windows)起动.

C-x C-z 挂起程序
C-c C-x 退出程序
C-c k   关闭buffer
C-l     重画屏幕
C-g     结束命令,或者假死中恢复,也可以按3次ESC

文件
C-x C-s 保存
C-x C-w 另存为
C-x C-f 打开文件
C-x C-r 只读方式打开
C-x C-v 读入另外一个文件代替当前buffer的文件
C-x s   保存所有
C-x i   将文件的内容插入
M-x revert-buffer    恢复到原始状态

跳转
前/后     单位
C-f/b    字
M-f/b    词
C-a/e    行内
M-a/e    句
M-    文档
C-p/n    行间
M-{/}    段落
C-x ]/[  页
C-x C-x  文件内,mark之间

M-g g  跳到指定行
M-x goto-char 跳到指定字符

编辑
M-u       后面单词变为大写
M-l       后面单词变为小写
M-c       后面单词的首字母变大写
M-/       补全
C-j       从当前位置分成两行,相当于RET + tab
M-(       插入()
C-q tab   插入tab
C-q C-m   插入^M
M-;       插入注释
C-o       回车

删除
M-d   后一词
C-d   后一字
M-del 前一词
M-k   到句尾
M-"   前面的所有空白
M-z   删到指定字母处
C-k   删除到行尾

文本换位
C-t        字符
M-t        单词
C-x C-t    行
M-x transpose-* 其他命令

撤销
C-/
C-x u
C-_
C-z

重做
C-g M-x undo
C-g C-/
C-g C-z
C-g C-_

粘贴
C-y
C-v

tab/空格转换
M-x tabify
M-x untabify

让选择的区块自动对齐
M-x indent-region

其他命令
C-u <数字> <命令> 重复命令n次
M-<数字>   <命令> 同上
M-!     运行shell命令
C-u M-! 执行一条外部命令,并输出到光标位置
M-x cd  改变工作目录
M-x pwd 当前工作目录

C-" 启动输入法
M-` 菜单
F10 菜单
M-x eval-buffer 在.emacs的buffer中运行,重新加载emacs配置

查找替换
----------------------------------------------------------------------
C-r 向上查找
C-s 向下查找
C-s C-w 向下查找,光标位置的单词作为查找字符串
C-s C-y 向下查找,光标位置到行尾作为查找字符串
C-s RET <查找字符串> RET   非递增查找
C-s RET C-w              不受换行、空格、标点影响
C-M-s                    正则式向下查找
用向上查找命令就将上面命令的s替换为r

M-%   替换
C-M-% 正则式替换
 y 替换当前的字符串并移动到下一个字符串
 n 不替换当前字符串,直接移动到下一个字符串
 ! 进行全局替换,并要求不再显示
 . 替换当前字符串,然后退出查找替换操作
 q 退出查找替换操作,光标定位到操作开始时的位置

-----------------------------------------------------------------------
TAGS:
etags -R
etags *.[ch]
find -name "*.h" -or -name "*.cpp" |xargs etags --members --language=c++

M-. 查找一个tag,比如函数定义类型定义等。
C-u M-. 查找下一个tag的位置
M-* 回到上一次运行M-.前的光标位置。
M-TAB 自动补齐函数名。


其他命令
M-x replace-*
M-x search-*

窗口
C-x 0 关掉当前窗口
C-x 1 关掉其他窗口
C-x o 切换窗口
C-x 2 水平两分窗口
C-x 3 垂直两分窗口
C-x 5 2 新frame

buffer
C-x C-b        查看
C-x b          切换
C-x C-q        设为只读
C-x k          删除
C-x left/right 切换

翻页
C-v 下一页
M-v 上一页

选择
M-h     选择段落
C-x h   全部选择

普通区块
C-SPC   M-x set-mark-command 单个位置set mark
C-@     同上
M-@     对word进行set Mark
M-w     先set Mark,移到光标,M-w就可以复制
C-w     剪切

矩形区块
用这些快捷键要先关闭cua-mode
C-x r t      用串填充矩形区域
C-x r o      插入空白的矩形区域
C-x r y      插入之前删除的矩形区域, 粘贴时,矩形左上角对齐光标
C-x r k      删除矩形区域
C-x r c      将当前矩形区域清空

寄存器
----------------------------------------------------------------------
光标位置和窗口状态
C-x r SPC <寄存器名>                   存贮光标位置
C-x r w <寄存器名>                     保存当前窗口状态
C-x r f <寄存器名>                     保存所有窗口状态
C-x r j <寄存器名>                     光标跳转

文本和数字
C-x r s <寄存器名>                     将连续区块拷贝到寄存器中
C-x r r <寄存器名>                     将矩形区块拷贝到寄存器中
C-u <数字> C-x r n <寄存器名>           将数字拷贝到寄存器中
C-x r i <寄存器名>                     在缓冲区中插入寄存器内容
M-x view-register                     查看寄存器内容
M-x list-registers                    查看寄存器列表

宏模式
C-x (                    开始一个宏的定义
C-x )                    结束一个宏的定义
C-x e                    执行宏
M-x name-last-kbd-macro  给最后一个宏命名
M-x insert-kbd-macro     在当前文件中插入一个已定义并命名过的宏

书签
C-x r m            设置书签
C-x r b            跳转到书签
C-x r l                  书签列表
M-x bookmark-delete      删除书签
M-x bookmark-load        读取存储书签文件
M-x bookmark-save        保存到文件

目录模式
----------------------------------------------------------------------
C-x d     M-x dired     启动目录模式
C-x C-d   简单目录
h         帮助
?         简单帮助
请参考

帮助
C-h k    显示你将按下的键执行的function.
C-h f    列出function的功能说明。
C-h b    列出目前所有的快捷键。
C-h m   列出目前的mode的特殊说明.
C-c C-h 列出以C-c 开头的所有快捷键.


Cscope在emacs中的配置与使用

安装和配置cscope
1.首先,在系统中安装Cscope。Linux下,安装软件的方式通常有两种:
方式一:下载Cscope的源代码,按照源码包中的INSTALL说明文件,执行下面的命令进行配置编译安装
./configure
make
make install
Cscope的源码包里面有个xcscope.el文件,为(X)Emacs提供了Cscope 接口。它处于源码包的 contrib/xcscope 目录下。
该目录下面还有一个名为cscope-indexer的脚本文件,用于创建文件列表和数据库。
方式二:利用linux发行版的软件管理工具进行安装。我使用的是Jaunty Jackalope(Ubuntu 9.04),只要一条命令,解决所有问题。
sudo apt-get install cscope
安装后,cscope-indexer脚本位于/usr/bin目录下,xcscope.el被置于emacs默认的load-path下,在我的系统中是/usr/share/emacs/site-lisp。

2.为了能够执行cscope-indexer脚本,需要将它放到PATH变量指向的文件夹下,如/usr/bin,并确认该脚本具有执行权限。

3.把xcscope.el文件放到系统用户的load-path下。为系统用户创建文件夹并将其加入load-path的方法是:先创建文件夹,
mkdir -p ~/.emacs.d/site-lisp/
然后,在emacs的配置文件~/.emacs中添加
;;LOAD_PATH      
(add-to-list 'load-path' "~/.emacs.d/site-lisp")
如果没有该文件,请手动创建。

4.在.emacs文件中加入下面的语句
(require 'xcscope)
或者,你希望只在打开c/c++文件的时候才加载xcscope,可以加入
(add-hook 'c-mode-common-hook '(lambda() (require 'xcscope)))

5.xcscope默认的快捷键都是绑定到C-c s的前缀上面,如果你经常使用xcscope.el,可以自己进行按键绑定,
减少击键次数。不要担心别人笑你懒,xcscope.el的编写者就鼓励我们这样做:-)。具体方法是,在.emacs文件中加入
(define-key global-map [(control f3)]  'cscope-set-initial-directory)
(define-key global-map [(control f4)]  'cscope-unset-initial-directory)
(define-key global-map [(control f5)]  'cscope-find-this-symbol)
(define-key global-map [(control f6)]  'cscope-find-global-definition)
(define-key global-map [(control f7)]  'cscope-find-global-definition-no-prompting)
(define-key global-map [(control f8)]  'cscope-pop-mark)
(define-key global-map [(control f9)]  'cscope-next-symbol)
(define-key global-map [(control f10)] 'cscope-next-file)
(define-key global-map [(control f11)] 'cscope-prev-symbol)
(define-key global-map [(control f12)] 'cscope-prev-file)
(define-key global-map [(meta f9)]     'cscope-display-buffer)
(define-key global-map [(meta f10)]    'cscope-display-buffer-toggle)
阅读(2966) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~