Emacs学习笔记

  rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

Learning GNU Emacs 3rd Edition》笔记

2008-7-24  version 1.0

 

 

本文面向C++程序员

1      几个概念

1.1 Filebuffer

Emacs将文件copy到临时的buffer中,编辑的是这个buffer,保存时才更改文件;buffer都拥有一个名字,它显示在界面的mode line栏上;

1.2 Framewindow

Emacs将图形化视窗称为Frame,将frame内的分栏称为window,这跟我们常规的概念刚好相反;

Framewindow用于显示buffer,但Buffer独立于framewindow

1.3 模式Modes

用于为某种特定应用提供方便,如Text mode用于编写文本,cc mode用于写C++代码等;

Major modebuffer必须处在某个major mode中,且同时只能处在一个major mode中;常用的major mode包括Fundamental modeText modeView modeShell modecc mode等;

Minor mode控制某个方面,可以自由开关——一个buffer可以同时处在多个minor mode中,minor modeAuto-fill modeOverwrite modeIsearch mode

某些mode可以同时用作major modeminor mode,即它们可以作为major mode独立使用,也可以作为minor mode放到其他major mode中使用;

Mode显示在emacs界面的mode line显示栏上;

2      按键规则

Emacs大量命令由一系列快捷键构成,常常需要按两组键或更多组按键才能完成一个命令;Emacs常用有两个功能键,ctrlMetaMeta一般对应AltEsc

按键表示法:

C-g,按住ctrl同时按g

M-x,按住Meta同时按x

Meta -,按下Meta同时按-

C-x f,按下ctrl同时按x,然后松开ctrlx,再按f

C-c something,按键方法同C-x f

C-x C-f,按下ctrl同时按x,然后释放xf——ctrl可以一直按住,也可以在中间松开

M-x long-command-name Enter,使用命令名输入

2.1 快捷键分布

大部分命令是:C-nM-n

其他有,C-x something,如文件操作、bufferwindow操作;

一些特殊的,C-c something,这通常与某些特定模式(mode)有关,如java mode

每个命令都有一个命令名称,这可以用M-x long-command-name Enter输入;

3      快捷键

3.1 Emacs操作

退出C-x C-c

取消命令C-g,用于按错键时取消

打开帮助

3.2 文件操作

打开find-fileC-x C-f

打开另一个文件find-alternate-fileC-x C-v

Tip可以使用Tab键让Emacs自动填充文件名,如果匹配项大于1会在一个窗口中显示所有匹配项,此时可以使用PgUp进行选择;

保存C-x C-s

另存write-fileC-x C-w

3.3 文件操作

l  移动:meta的移动幅度比control的大

Char/Word                        f/b

Line/sentence              a/e

scroll-up/scroll-down     C-v/M-v

buffer                          M-

l  删除:meta的作用范围比control的大

Char/word             d/Del

Line/sentence        k

C-y        取消删除——实际是粘贴

C-w       cut一个region

l  选择

Region,选定的一个范围称为region

C-space          设定region起点,终点是光标当前位置

C-x C-x          region范围

M-h               选定一整段

C-w               剪切

M-w                     copy

C-y                粘贴

C-x h             选择整个buffer作为region

l  取消

C-_C-x u

从自动保存文件中恢复:M-x recover-file Enter

l  交互

C-x C-t          将光标的上一行下移

 

3.4 查找替换:

查找的种类:

l  简单方式,Emacs搜索输入的字串

l  增量查找:在输入同时查找,C-s(再次按C-s查找下一个)

l  全词匹配查找:C-s Enter C-w,反向使用C-r Enter C-w

l  正则表达式查找:

默认查找不区分大小写,但如果输入了大写字母,则使用大小写敏感查找;

C-g,查找完成后回到查找开始的位置;

C-s,增量查找;C-s C-w查找光标后的wordC-s查找下一个,C-r找上一个;

 

l  简单替换,替换全部,M-x replace-string Enter,无替换提示

l  提示替换,M-%开始,space接受替换,n不替换,!替换余下的所有,q退出;

 

3.5 BufferWindowsFrame

打开文件命令C-x C-f,如果文件已经在某个buffer中,它仅仅是使用这个buffer

C-x b 在同一个window中切换不同的buffer,使用箭头选择一个buffer打开,也可以输入新文件名用于新建文件;

C-x k,删除bufferkill-buffer

C-x C-b显示打开的所有buffer

C-x s,保存所有打开的bufferC-x C-s保存当前的buffer

C-x C-q,使buffer只读

 

C-x 0,删除window

C-x 1,删除其他window

C-x 2,打开一个新的window

C-x 3,打开竖排的window

C-x 4 f,在另一个window中打开文件

C-x 4 b,在另一个window中打开另一个文件

C-x o,切换到另一个window

C-x {/C-x }调整Window大小,

 

C-x 5 2打开frame

3.6 Bookmark

C-x r m,设置

C-x r b,跳转到

C-x r l,列出所有bookmark

3.7 执行命令

M-!,执行单行命令,如diff,输出显示在另一个window

M-h M-|,执行shell命令

C-u M-!,执行shell命令,并将输入插入当前buffer

M-x shell Enter,打开shell mode

3.8 打开Man手册

M-x man,然后输入要查询的内容,如“3 sleep

3.9 作为IDE

M-x compile Enter,编译

C-x `,跳转到下一个错误处,可在编译同时改错

M-n,跳到下一错误;

M-p,上一错误;

 

M-;,增加注释;

M-j,继续在下一行写注释;

注释掉一段代码:选择一个region后,M-x comment-region,反操作uncomment-region

M-x kill-comment删除本行的注释

C-j,换行并自动缩进

C-M-/,自动排版region

 

    3.9.1 使用etags

可用于定位函数;

首先在目录下使用命令etags命令建立tag table,如etags *.[ch]建立.c.h文件的tag,输出文件为TAGS(刷新tag table需要再次执行该命令?!)

然后,M-x visit-tags-table,为emacs指定tag table

M-.,查找tag,如函数定义,不能定位变量定义;

C-x 4 .,在另一个Window中显示查找结果;

M-,,查找下一处定义;

M-x list-tags,列出所有tags

    3.9.2 C++ edit

C-M-a/C-M-e         到函数头、尾

C-M-h                   选择整个函数

C-c C-u                 的开头,C-c C-n/p,跳到上/下一个宏

C-c C-a                 Auto new line,在输入”;”等符号时自动增加新行;

M-x c-set-style       设置缩进风格,如Linux

C-c C-d                 hungry-delete-keydelete将删除前面的所有空格;

C-c C-t                 等价于C-c C-a + C-c C-d

M-/                       自动补全

3.10 其他命令

show-paren-mode   显示匹配括号

C-l 重绘屏幕、并且把当前行移动到屏幕中央

你可能感兴趣的:(Linux)