EmacsC++学习笔记.docx
- 文档编号:9443805
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:59
- 大小:53.52KB
EmacsC++学习笔记.docx
《EmacsC++学习笔记.docx》由会员分享,可在线阅读,更多相关《EmacsC++学习笔记.docx(59页珍藏版)》请在冰豆网上搜索。
EmacsC++学习笔记
对我有用的模式主模式
文本模式
邮件模式
TeX模式
LaTeX模式
C模式
C++模式
副模式:
自动换行模式
自动保存模式
行号模式
Emacs名称自动补足功能
如果想打开一个已经存在的文件,那么只需输入文件的开头几个字母,已构成唯一可以识别的文件名即可;然后按下TAB键,Emacs会自动补全。
插入和追加文件
如果按下C-xC-s组合键发生了死机,那么按C-sC-q
C-s表示停止接收输入,C-q表示重新启动这次输入。
键盘基本操作
C-xC-f查找文件并在一个缓冲区里打开,不能在“C-xC-f”里用*、?
等通配符。
C-xC-v读入另外一个文件替换掉用“C-xC-f”读入的文件,意为:
读取另外一个文件来代替刚才读取的那个文件。
C-xi把文件插入到光标的当前位置
C-xC-s保存文件,系统将保存文件并退出。
C-xC-w把缓冲区内容写入一个文件,写文件来保存文件。
Write-file与save-buffer做法上稍有区别前者表示想改变原文件的名字,后者不想。
用write-file会提示你输入一个新的名字。
C-xC-c退出Emacs,Yes表示不保存直接退出,No表示持续Emacs会话,就像你没按过一样。
如果对文件做了修改,则同样使用以上按键组合退出,只是这时系统将询问是否保存文件,如果键入y,则系统保存文件;如果是个新文件,系统提示输入文件名,保存后退出。
如果键入n,则系统将再次询问是否真的不保存缓冲区中的内容退出,这时回答yes则放弃所做修改退出;
移动光标的其他方法
ESCf光标右移一个单词
ESCb光标左移一个单词
C-a把光标移动到一行的开始(就像是a是字母表的首字母一样)
C-e把光标移动到一行的末尾
ESCa把光标左移一个句子
ESCe把光标右移一个句子
ESC}光标下移一个段落
ESC{光标上移一个段落
以Ctrl开头的一般比ESC开头的移动的距离短
翻页命令
如果文件里有分页符,可以通过敲入“C-x]”或“C-x[”把光标下翻一页或者上翻一页。
Emacs所使用的分页符是用一个名为page-delimiter的变量定义的。
如果想在文本模式下插入分页符,可以按下“C-qC-l”组合键,“C-q”叫做引用命令,它的作用是告诉Emacs把“C-l”字符插入到文件里去,而不是把它解释为重新绘制屏显画面命令。
把屏幕上的文件上卷一页,可以用PgDn或“C-v”组合键。
把文件的前一屏内容显示在屏幕上,“ESCv”或PgUp。
光标移动到编辑缓冲区的末尾,End键或“ESC>”
光标移动到编辑缓冲区的开头,Home键或“ESC<”
编程时常用的两个命令
另外两种移动光标的好方法:
ESCxgoto-linen(RETURN)
移动到哪一行
ESCxgoto-charn(RETURN)
移动到哪一个字符
上面两个命令的计数都是从文件头开始计数的。
命令的重复执行
在要重复执行的命令前面加上“ESCn”即可。
(这个命令被叫做digit-argument命令)
例子:
假设正在编辑一个大约有1000行的文件,如果输入“ESC500C-n”,光标就会向下移动500行。
另外一个可重复编辑的命令为,“C-u”,
“ESC5”和“C-u5”都可以把后面的命令重复使用5次。
两者不同之处:
“C-u”可以不带参数n,默认的是执行4次。
“C-uC-u”是执行16次。
以此类推。
。
。
光标移动命令小结
C-f光标向右移动一个字符
C-b光标向左移动一个字符
C-p向上一行
C-n向下一行
ESCf向右一个单词
ESCb向左一个单词
C-a行首
C-e行尾
ESCe右移一个句子
ESCa左移一个句子
ESC}后移一段
ESC{前移一段
C-v向下翻屏
ESCv向上翻屏
C-x](若有分页符)向下翻一页
C-x[(若有分页符)向上翻一页
ESC<移动到文件头
ESC>文件尾
goto-line
goto-char
C-l重新绘制屏显画面,当前行放在画面中心处
ESCn重复执行以后命令n次
C-un同上(缺省n为4次)
以上自己到前面查即可
文本的删除
C-xu撤销最近一次的编辑操作,再按一次在撤销一次
C-d删除光标出的字符
ESCd删除下一个单词
C-k删除从光标位置到行尾的文本,在空白行按下“C-k”将删除这一行。
ESC—C-k(即先按下ESC,再按下短划线,再按C-k)删除从行首到光标位置的文本。
恢复已删除的文本
C-y
如果连续删除了多行文本,那么用一个“C-y”就可以将它们全部恢复过来。
(其实删除的东西是到了删除环里去了,类似于粘贴板的东西)
什么东西会到删除环里呢?
用“C-k”删除的所有东西,用“C-w”删除的所有东西,用“ESCw”复制的所有东西,用“ESCd”、“ESCDEL”删除的单词段落和句子,用“C-u”加“DEL”或“C-d”删除的文本,不会保存到删除环里的大概只有用DEL或“C-d”删除的单个字符了(这可以用C-xu来恢复)。
Emacs对删除环里文本的处理很聪明,可把一组删除操作删除的东西正确的拼接起来。
如:
先按几个“ESCd”,再来几个“ESCDEL”,中间可以夹杂几个“C-k”,当按下“C-y”则全部恢复。
但是若中间夹杂着“C-d”等命令,则以上删除操作不能视为连续的删除操作。
实际上是几次相互独立的删除操作。
文本删除命令小结
C-d删除光标位置上的字符
DEL删除光标前面的字符
ESCd删除光标后面的单词
ESCDEL删除光标前面的单词
C-k删除光标位置到行尾
ESCk删除光标后面的句子
C-xDEL删除光标前面的句子
C-y恢复被删除的文本
C-w删除文本块
文本块及其编辑操作
把光标移到文本块的一端,按“C-@”或“C-Space”组合键设置一个文本标记,然后移动光标,文本标记处与光标的位置处组成了一个文本块。
按“C-xC-x”交换光标和文本标记的位置,在对文本块作删除之前可以用“C-xC-x”检查一下。
C-w删除文本块
如果对删除的东西不放心,可以用“C-xu”组合键来撤销这次操作,撤销回来的仍然带有文本标记,如果想再次删除可以用“C-w”命令,如果想移动文本,先用“C-w”删除,再将光标移到想插入的地方,按下“C-y”即可。
可以用鼠标选择文本块,也可以用“C-xC-x”检查。
鼠标双击选择一个单词,三击选中一行。
文本的复制
选中文本块,然后按下“ESCw”组合键,然后光标移动到目标位置,按下“C-y”,插入点在光标的前面。
回复早先的删除操作
“C-y”会把最新删除的文本恢复过来,继续按下“ESCy”则会用删除环里倒数第二次的删除的文本把刚回复的内容换掉,继续按“ESCy”则会将删除环里更早的记录来替换刚恢复的。
文本块的操作命令小结
C-@标记文本块的开始
C-xC-x呼唤插入点和文本标记的位置
C-w删除文本块
C-y粘贴最近删除或复制的文本
ESCw复制文本块
ESCh标记段落
C-xC-p标记页面
C-xh标记整个缓冲区
ESCy在用过“C-y”以后,粘贴更早删除的文本。
交换位置
最常见的错误是把两个字符的顺序打错了,如:
times打成了timse,se两个字的顺序不对,往往是刚打完就发现了这一错误,按下“C-t”可以交换两字母的顺序。
(先把光标放在要交换的两个字符的后一个上,然后按下“C-t”,则可以实现字符的交换顺序,移完后光标在这两个字符的后面)。
交换两个单词的位置:
光标放在两个单词中间,按下“ESCt”,移完后光标在第二个单词的后面。
交换两个文本行:
光标放在第二个文本行的任意位置,“C-xC-t”,交换完之后光标在第三行的行首。
位置交换命令小结
C-t
ESCt
C-xC-t
改变字母的大小写
如果想把某个单词的第一个字母改为大写,光标放在第一个字母上,“ESCc”。
想把一个单词全部改为小写,则“ESCl”(得放到单词的开头)。
想把一个单词全部改为大写,则“ESCu”(得放到单词的开头)。
上面两个的命令是将某个单词的光标所在的以后的部分换成大写或小写。
前面的几个命令前面加“ESC—”则对单词的前半部分修改(前提是如果光标放到了中间的某个位置),不包括光标位置处,只是光标之前的。
这么来说,那么如果光标放到了单词的中间,那么“ESC—ESCc”会将单词首字母改为大写。
字母大小写命令小结
ESCc
ESCu
ESCl
ESC-ESCc
ESC-ESCu
ESC-ESCl
命令的中止和撤销小结
C-g放弃当前命令
C-xu撤销上一次编辑(可以重复使用)
C-_或C-/撤销上一次编辑
恢复丢失的编辑修改
自动保存文件名与正在编辑的文件名一样,只不过在文件名前后有“#”号,从自动保存文件恢复文本的方法是输入“ESCxrecover-fileRETURN”,Emacs会问Recoverauto-savefile#filename#?
(yesorno)
(也可以在使用recover-file之前先用“C-xC-f”把自动保存文件#filename#读到一个缓冲区里并对它仔细的检查)。
注意:
如果在文件里进行了一次大规模的删除操作,Emacs将停止自动保存这个文件并显示一条消息通知用户。
要想让Emacs重新保存这个文件,请用“C-xC-s”组合键给这个文件存一次盘即可。
对Emacs进行定制
通过“.emacs”文件定制,步骤:
1.进入Emacs
2.输入“C-xC-f~./.emacs”,再按下回车键
3.按下“ESC>”组合键移动到文件的末尾
4.把本书给出的语句准确的输入到文件里去
5.按下“C-xC-s”组合键保存“.emacs”文件
6.按下“C-xC-c”退出Emacs
7.重新启动Emacs,让新添的语句起作用
如果在输入方面出了点小错误,重新启动后,会发现一条“Errorininitialfile”的错误信息。
重新编辑.emacs文件,再执行上述步骤。
。
。
定制可以包括以下几方面:
自动启用文本模式和自动换行模式
自动启用临时标记模式
解决控制流问题
重新绑定键盘按键
具体的命令书上写的不清楚可以自查。
递增查找
递增查找从输入字符串的第一个字符就开始行动了。
方法:
“C-s”,进入I-search模式,再输入想查找的文本。
若找到了想要的东西,按下回车键退出这次查找,光标将停留在文件的当前位置上。
如果Emacs未找到,则显示“Searchfailed”信息,并蜂鸣报警。
如果找到了,但是单词的位置不是你想找的那个,再次按下“C-s”组合键,使Emacs继续查找下一个出现该单词的地方。
Emacs会用当前查找字符串去进行查找,用不着重新输入。
找到了自己想要找的东西后,一定要记得按下回车键。
放弃这次查找的办法是按“C-g”键,这个命令会回到开始查找操作之前的地方去。
注意:
当Emacs正在进行查找操作的时候,“C-g”组合键的含义会有点小变化,这一点很重要,特别是当需要在Emacs找到它正在查找的东西之前,取消这次查找操作的时候更要注意。
按一次“C-g”组合键只会回到Emacs刚才找到的地方,光标将在最后一个字符上;而这次查找操作仍未取消。
按两次“C-g”组合键才能彻底取消这次查找操作,回到最初开始查找的地方去。
如果想向文件头方向查找,“C-r”。
简单查找
注意区分向前查找与向后查找,向前是向文件尾方向找,向后是向文件头方向查找。
“C-sRETURN”或“C-rRETURN”
输入查找字符串,再按下回车键,Emacs就开始查找了;
再次按下“C-s”将让Emacs去查找下一处。
单词查找
不受换行符、空格和标点符号的影响,递增查找可能会,这就是递增查找为什么有时候找不到某个短语的原因。
“C-sRETURNC-w”,输入查找字符串,回车。
如果想向后查找则按下“C-rRETURNC-w”。
用单词查找,你要查找the,不会找出there、theater、thesis、blithe等。
基本查找和替换操作
如果拼写能力比较弱,要将recieve替换为receive
若想把某个字符串都替换为另一个字符串。
“ESCxreplace-stringRETURN”,再输入查找字符串,按下回车键;
然后按下替换字符串,再次按下回车键。
Emacs将从光标位置开始,把文件里所有出现查找字符串的地方都换掉。
如果想对整个文件进行查找和替换,可以在使用这个命令之前先用“ESC<”组合键将光标移动到文件的开头。
查询和替换操作
有时候不需要把出现查找字符串的每一个地方都替换过来,若果文件的长度超过五行、对整个文件进行全局替换就有些不够慎重。
如果想一个一个的决定是否要进行替换,可以使用查询-替换操作,以便能够有选择的对文件里的某个字符串进行改正。
“ESC%”,然后看提示操作。
查询-替换操作中的响应
SPASE或y用新字符串替换查询字符串,然后前进到下一个位置
DEL或n不替换;前进到下一个位置
.在当前位置做替换后退出查询-替换操作
替换并显示替换情况(在按空格键或“y”后才移动到下一个位置)
!
对后面的文件内容全部进行替换,不再提问是否要进行替换
^返回上一次进行了替换的位置
RETURN或q退出查询-替换操作
C-r进入递归编辑状态
C-w删除此处内容并进入递归编辑状态(好做其他修改)
ESCC-c退出递归编辑状态,继续完成查询-替换操作
C-]退出递归编辑状态和查询-替换操作
查询-替换(以及其他复杂命令)的重复执行
在学完查询-替换的基本用法之后,我们再介绍一种快捷操作方式。
这种快捷操作方式不仅能够用在查询-替换里,还可以用在Emacs几乎所有的地方:
复杂命令的重复执行(前后两次操作可能会稍有不同)。
有时候,会不小心退出了查询-替换操作,或者又想对替换字符串再稍加修改。
“C-xESCESC”,最后一次输入的复杂命令将被调出来。
如果它不是想要的,可用“ESCp”、“ESCn”上下翻记录。
“ESC<”,光标移动到文件开头。
“C-xESCESC”,最后一条复杂命令将被调出,若愿意还可以对其修改。
。
。
如果找到想要执行的命令,RETURN
递归编辑
在进行查询-替换的时候,几乎不可避免地会看到还有其他一些地方需要修改。
第一反应是记下那些错误,等完成查询-替换操作之后再来修改它们;
第二反应是着急上火——等完成替换操作后才发现自己已经想不起来刚才看到哪儿还出了错。
Emacs允许在一次查询-替换操作的过程中再开始一次递归编辑。
要想在查询-替换过程中开始一次递归编辑,需要按下“C-r”组合键(注意:
“C-r”在查询-替换中的含义与它在正常的Emacs编辑活动中的含义是不同的)。
进入递归编辑后,可以移动光标,改动字符。
。
。
“ESCC-c”,退出递归编辑,重新开始继续执行查询-替换操作。
“C-]”,在退出递归编辑的同时也取消查询-替换操作。
Emacs高级用户注意:
(不仅仅是在查询-替换的过程中)开始一次递归编辑。
“ESCxrecursive-editRETURN”,进入递归编辑状态;
“ESCC-c”,退出递归编辑状态,返回此前的工,甚至可以在递归编辑里再来一次递归编辑;
找操作中的字母大小写问题
默认的情况下,Emacs的查找不区分大小写,替换时,大写被换为大写,小写被换为小写。
变量case-fold-search决定查找操作是否要区分大小写,默认状态下,case-fold-search值为“t”,意思是“如果用户输入的字符串不是大小写混杂或全为大写字母,就不区分大小写字母”。
如果真的要在查找操作中区分大小写字母,就要用“ESCxset-variableRETURN”命令把case-fold-search的值设为“nil”。
Emacs会提示输入一个变量名,输入“case-fold-searchRETURN”。
Emacs再提示输入一个新值,输入“nilRETURN”。
类似地,如果不想对替换字符串中的字母大小写情况进行调整,可以修改变量case-replace的值。
其缺省值也为“t”,意思是:
“根据原始文本调整替换字符串中的字母大小写情况”——如果原单词的首字母是大写的,替换字符串的首字母也要大写等等。
设为“nil”,意为:
“不要对替换字符串中的字母大小写情况进行调整,就按输入进行替换”。
把下列语句加入“.emacs”文件,可以永久性地改变这些变量的设置值:
(setq-defaultcase-fold-searchnil)
(setq-defaultcase-replacenil)
查找与替换操作中的正则表达式
^匹配行首
$匹配行尾
.匹配任意单个字符(类似于文件名中的问号?
)
.*匹配任意(零或以上)个字符(这是一个真正的通配符、类似于文件名中的*)
\<匹配单词的开头
\>匹配单词的结尾
[]匹配方括号中的任何一个字符;比如“[a-z]”将匹配任意一个字母表字符
“^word$”,找到的是独占一个文本行的单词“word”。
“^”的含义是字母“w”必须是文本行的第一个字符,而字符“$”的含义是字母“d”必须是文本行的最后一个字符。
“beg[a-z]*s”,“begins”、“begets”、“begonias”、“shibegrees”、“altbegaslia”之类的单词全被找出来了。
“\
“\”,找出“beg”、“big”、“bag”之类的单词。
如果想对“^”、“$”、“.”、“*”、“[”、“]”或其他特殊字符进行查找,必须在它们的前面加上一个反斜杠(\)。
即,如果想要查找英文句号,必须查找“\.”。
正则表达式查找命令速查表
ESCC-sRETURN向前查找一个正则表达式
ESCC-rRETURN向后查找一个正则表达式
ESCC-s向前递增查找一个递增正则表达式
ESCC-r向后递增查找一个递增正则表达式
拼写检查
用Ispell检查
“ESCxispell-bufferRETURN”
Ispell移动到它不认识的第一个单词;
辅助输入区里出现“C-hor?
formoreoptions”的字样。
因为是第一次用Ispell,所以按下“?
”来看看它还有哪些操作选项;
若按下“r”,Emacs会在输入了正确的单词之后再检查一遍;
“R”,Ispell将开始一次查询-替换操作,以便把编辑缓冲区里所有同样的错误都改正过来;
“空格键”,跳过此处错误的单词;如果想让Ispell在检查编辑缓冲区余下的内容时,把某个拼错了的单词都跳过去,请按“a”;“A”表示在这次编辑工作里接受那个单词,但只是在这个编辑缓冲区里才有效。
如果再次遇到了这个单词,而它确实拼写正确,那么可以按下“i”让Ispell把它插入到字典里;如果想让Ispell把单词以小写的形式插入到字典里,按下“u”;
如果发现了比较复杂的错误并打算亲自改正,“C-r”,开始一次递归编辑,改正错误后,“ESCC-c”,退出递归编辑,Ispell将继续检查;
(最上面是有选项的)。
查单词
在打字的时候,有时候会说:
“哎,这个单词怎么拼呀?
”或者“我好像拼的不对。
”
如果想对光标位置上的单词进行检查,请按下“ESC$”;
如果实在想不起来某个单词怎么拼,可以先输入那个单词的头几个字母,然后按下“ESCTAB”组合键(该功能只能用在文本模式)。
Ispell进程
杀掉它,“ESCxispell-kill-ispell”
单词简写模式
假设正在起草一份合同,合同里会反复用到“NationalInstituteofStandardsandTechnology”这个短语却不允许用简写词,重新输入很费劲,可以特意定义一个简写词“nist”,只要输入“nist”加一个空格或一个标点符号,emacs会把整个短语完整的插入到文本里。
简写词的作用范围是编辑模式,而非文件或编辑缓冲区。
为一次编辑工作定义临时性的简写词汇
“ESCxabbrev-modeRETURN”,进入单词简写模式;
如果想定义全局性简写词,请在输入简写词之后按下“C-xaig”组合键(命令名为add-inverse-global),如果想定义的是局部性简写,“C-xail”;
Emacs将提示输入其扩展短语;
输入该简写词的扩展短语后按下回车键;
为多词编辑工作定义永久性的简写词汇
当编辑工作离不开单词简写模式的地步时,把它加到“.emacs”文件里是最简单的解决方案。
(具体步骤用到了再查)。
删除简写词汇条目
“ESCxedit-abbrevsRETURN”,编辑简写词汇表;
“ESCxlist-abbrevsRETURN”,查看简写词汇表;
词汇表显示出来以后,按下“C-k”组合键来删除不想要的条目;
最后输入“ESCxwrite-abbrev-fileRETURN”保存文件;
“C-xb”返回此前正在编辑的编辑缓冲区。
禁用简写词汇
简写词汇与字母大小写
编辑缓冲区、窗口、文件
编辑缓冲区是文件的一个工作副本,窗口是显示器屏幕上的一个区域。
可以在屏幕上让好几个窗口显示同一个编辑缓冲区——比如想查看同一文件的两个不同的位置、或者想把一个地方的内容复制到另一个地方去的时候。
同时使用多个编辑缓冲区进行工作
“C-xC-v”,帮你带回原来的文件,它的含义是:
把真正想要的文件找出来并要它替换现在的这个;
“C-xC-f”,后面跟的是文件名;
“C-xb”,在编辑缓冲区之间进行切换,它后面跟的是编辑缓冲区的名;
GNU只显示编辑缓冲区的名,如果没对它们进行过修改,则编辑缓冲区名和文件名一样;
如果在“C-xb”的后面输入了一个新的编辑缓冲区的名,emacs将新创建一个与任何文件都没有联系的编辑缓冲区,并转移到那里;
如果在“C-xb”的后面输入了一个已有的编辑缓冲区名,emacs将进入那个编辑缓冲区(不论该编辑缓冲区是否与某个文件相关联)
在编辑缓冲区之间进行切换要按下“C-xb”组合键。
emacs会显示一个默认的编辑缓冲区名。
如果它就是想去的编辑缓冲区,直接按下回车键;否则请输入正确的编辑缓冲区名的前几个字母再按下TAB键,emacs将自动补足名字的剩余部分,现在,按下回车键就能转移到那个编辑缓冲区。
用“C-xb”新建的是编辑缓冲区,未与任何文件发生关联,即使退出也不会提示保存。
“C-xb”特别适用于没有记住正在编辑的文件的名字的场合。
假
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EmacsC 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)