emacs复制粘贴和查找撤销
在emacs下复制粘贴是这样的。
1、在任一行中按下ctrl+space键,最底行会显示 Mark set 表示已经开始标记了。
2、移动鼠标或者选中文字然后,可以有两种方式:Alt+w (复制) 或者 Ctrl+w (剪切)。如果您选择复制,Emacs 会先回到标记的位置,让您查看选中的区域。
3、最后,移动到您想要这段文本结束的地方并按下 Ctrl+y。
但是,ctrl+space键和输入法会有冲突,我是这样解决的,我用ctrl+回车来解决
在~/.emacs文件中添加代码即可。
;; C-SPACE 被输入法占用,C-@ 又太难按,于是把 set mark 绑定到 C-return
(define-key global-map [C-return] 'set-mark-command)
要查找文本,移动到相应的缓冲区并按 Ctrl+s
要查找并替换,请按 Alt+%。Emacs 会询问查找哪个字符串,用什么来替换它,以及在每个匹配点要求确认替换。
按下 Ctrl+x u 将撤消上一步操作。想撤消多少步都可以。
退出 Emacs 的快捷键是 Ctrl+x Ctrl+c。如果您还未保存您的更改,Emacs 会询问您是否想要保存您的缓冲区。
查看目前的$HOME可在EMACS下c-x c-f,输入~表示到默认$HOME目录,即可看到.emacs文件
转自http://blog.chinaunix.net/uid-24948934-id-59824.html
更多细节:
http://blog.chinaunix.net/uid-9525959-id-2001558.html、
这里是对Emacs中的简易教程的翻译和总结。
Emacs简易教程阅读:
命令:
$emacs
进入之后,输入:
C-h t
这里,C-h表示按住[Ctrl]键的同时按h
#######
20090620
*退出:
输入“C-x C-c”
*撤销:
输入"C-x u"
或输入"C-_"
这里,"C-_"比较好输入一些(好像C--也行),但是有的键盘上面没有"_"就只能输入“C-x u”了,撤销动作能进行20次。
*向上翻页:
输入"M-v"
这里,右手的M好像不好使?
*向下翻页:
输入"C-v"
*刷新屏幕:
输入"C-l"
这里,l不是1,执行之后光标和相应文字都跑到屏幕中间。
*基本移动光标:
C-f 向前移动一个字符。
C-b 向后移动一个字符。
M-f 向前移动一个单词。
M-b 向后移动一个单词。
C-n 移动到下一行。
C-p 移动到上一行。
C-a 移动到行首。
C-e 移动到行尾。
M-a 向前移动到句子的开头,可能跨多行或一行都不到。
M-e 向后移动到句子的末尾,可能跨多行或一行都不到。
从以上几个命令可知,M是和语言相关的控制键,C之后基本单元有关。Emacs有个特点,就是你移动光标的时候,如果光标超出了屏幕范围(向上或者向下),则立刻将光标及附近文字居屏幕中央。
*重复一定次数的操作:
输入"C-u <数字> <你想要重复操作的命令或输入的字符>"
这里,
C-u <数字>是一个“前缀”,数字是要执行后面的命令的次数;例如"C-u 8 C-p"表示向前8行。
多数命令把这个“前缀”做为重复,但是有些特殊命令不是这样,以后会遇到的。
C-v和M-v加上这个数字表示的是把屏幕移动多少行而不是翻多少页。
*终止现在正在执行的命令:
输入"C-g"
*关掉其它窗口,只显示光标所在窗口:
输入"C-x 1"
在多窗口的时候,这样就会把所有窗口关掉,只显示一个窗口了。
*让光标所在行跑到屏幕顶部:
输入"C-u 0 C-l"
*查看C-f的文档解释:
输入"C-h k C-f"
这样,将新开一个窗口显示该命令(C-f)的解释,其它命令解释类似。
*基本删除操作:
<Delback> 删除光标前面的字符,不可再粘贴
M-<Delback> 除去光标前面的单词
C-d 删除光标后面的字符,
M-d 除去光标后面的单词
C-k 除去从光标位置到行尾的内容,可再粘贴
M-k 除去到当前句子的末尾
####阅读至386行
###########
20090621
*kill一个块的内容:
1)在块的一端输入"C-<SPC>"或"C-@".
这样将设定一个标记。
2)在块的另一端输入"C-w".
至此,这个块(在两端之间的部分)将被删除。
kill和delete的区别是,kill掉的部分可以被粘贴上去,类似剪切。
*kill当前行的光标和光标之后的部分:
输入“C-k”
这样,会删除相应包括光标所在内容,再按"C-k"删除换行符号。
*粘贴最近kill方式删除的文本:
输入"C-y"
*粘贴前几次某次kill删除的文本:
1)先输入"C-y"
这样会把最近的kill删除的文本粘贴回来。
2)多次输入"M-y"
这样,会不断用之前的kill删除的文本来替换当前刚刚粘贴上去的文本(循环的),这样一直进行下去,直到粘贴上之前某次删除的文本。
*打开一个文件yourfilename:
命令行下:$emacs yourfilename
或者emacs下输入:"C-x C-f <yourfilename>"
这样,如果文件名不存在则新建一个,第二个命令"C-x C-f"后有提示让你输入待打开的文件的路径,当前的文件没有保存也不会提示但是退出时候会提示你刚才载入新文件之前没有保存的文件是否保存,没新打开一个文件emacs会新建立一个buffer存放该文件。
*保存一个文件:
输入“C-x C-s”.
这样会保存文件,如果没有保存则提示。如果你没有保存文件,底部的提示行会用*表示未保存。
*查看emacs所有的buffer列表:
输入"C-x C-b"
这样,会显示一个buffer列表,每项显示打开的一个文件的名字。
*切换到相应buffer列表:
输入"C-x b <buffer列表名>"
这里,"C-x b"之后直接输入buffer列表名字,比"C-x C-f"的方式切换简单多了。
*保存buffer内容:
输入"C-x s"
这样,输入"C-x s"之后,会依次询问你那些被改变的没有保存的buffer文件是否保存,你只需要回答就行了。
##########阅读至650行
#######
*替换字符串:
1)输入"M-x "
这样,提示你输入替换命令,可以用<TAB>自动补全。
2)输入"repl s<TAB>"
这里就是利用<TAB>来自动补全命令的,如果不补全回车的话,命令唯一则也行。
3)输入“<Return>”
回车<Return>之后,提示要你输入要替换的字符。
4)输入"要替换的字符"
5)输入"<Return>"
回车<Return>之后,提示要你输入要替换成的字符。
6)输入"要替换成的字符"
7)输入"<Return>"
*自动保存功能:
emacs提供自动保存功能,例如当你修改“hello.c”文件的时候,它会生成一个“#hello.c#”文件(称做自动保存文件),并且周期的向这个文件写入最新数据,当你保存文件的时候,emacs才会删掉这个文件。当你机器挂掉的时候,你可以利用这个文件进行恢复。
*利用自动保存文件恢复文件:
假设文件hello.c的自动保存文件是#hello.c#恢复步骤如下:
1)输入"M-x"
这样,提示你输入恢复命令,可以用<TAB>自动补全。
2)输入"recover<TAB>"
这样会自动补全为recover-file
3)输入"<Return>"
4)输入"hello.c"
这里输入的就是要恢复的文件名,而不是#hello.c#
5)输入"yes"
这里根据提示输入"yes"表示确认恢复。
*转换主要显示模式:
假设转换为fundamental模式,步骤如下:
1)输入“M-x”
2)输入“fundamental<TAB>”
这里输入的是模式的名称,利用<TAB>自动补全。
3)输入“<Return>”
这样就把模式转换成为fundatmental模式了。emacs中有几种不同的主要模式,它们用来编辑的不同类型的文本,当前所处的主要模式的名称显示在底部的状态栏上面,不同的主要模式中的命令行为稍微不同。例如:text模式在M-f和M-b的时候,把顿号也视为单词的一部分,而fundatmental模式把顿号视为分隔符号等等,不过命令大体行为是一样的。
*查看你当前主要模式下的帮助文档:
输入"C-h m"
*打开关闭次要模式:
假设打开关闭的是Auto Fill mode,步骤如下:
1)输入"M-x"
2)输入"auto-fill-mode"
3)输入"<Return>"
回车之后,就会打开或者关闭auto-fill-mode模式(切换),这个模式在human-language text编辑中非常有用,该模式为on的时候,当一行单词数目过多的时候,它会在最后一个单词尾(注意就是必须要整个单词接空格的那种)自动插入换行而不是续行符号。
既然有主要模式,当然也有次要模式,次要模式并不能替代主要模式,它们只是一些类似“选项”的东西来稍微改变主模式的行为,能够独立于主模式或者其它次要模式来打开和关闭。
*改变一行的填充(不明白?):
假设改变为20,输入如下:
1)输入"C-u 2 0 C-x f"
2)输入"M-q"
这样设置后auto-fill-mode不管用了,想要重新re-fill,要在当前段内输入M-q。 会发现该段变成了每行20个字符。
##########阅读至850行
#######
*搜索:
假设搜索“cursor”,步骤如下:
1)输入 “C-s”
这时候,底部会出现一个提示,提示你输入要搜索的字符串
2)输入“<你要搜索的字符串>”
这时候,你会发现,随着你的输入,emacs会高亮相应的匹配并且光标向后跳到最近匹配,当你搜索的时候删除一个字符,emacs会跳到上次光标搜索的单词处(少一个字符的),当删成了空的时候,应该光标就跳回到最开始你搜索之前的位置了。
3)输入"C-s"
这样会把光标跳到下一个匹配的字符串。
4)输入"<Return>"
回车之后,会结束搜索(下次连续两个"C-s"会继续搜索上次的搜索字符串)。
注意,有的系统会把"C-s"解释为锁屏,而不等把命令传给emacs,这时你可以按C-q停止锁屏,然后查看文档的“Spontaneous Entry to Incremental Search”部分。
*反向搜索:
方法同“搜索”的方法,不过把"C-s"改成了"C-r"
*把当前光标及所在行设置为屏幕中第一行:
输入"C-u 0 C-l"
这里是小写L不是1。
*分割窗口:
输入“C-x 2”
这样会水平把当前窗口分割成为两个,可以两个窗口显示不同的文件。
*光标在当前窗口,给底部的窗口翻页:
输入“C-M-v”
或者输入“<Esc> C-v”
这里,emacs处于水平分割为两个窗口的状态,当前光标在上面的窗口中,然后这个命令会给下面的窗口翻页;如果光标在下面的窗口中会给上面的窗口翻页;注意如果你没有M控制键(就是Alt)那么你要实现这个功能就用第二个方法,先输入<Esc>再C-v。
*在分割的上下两个窗口间切换:
输入“C-x o”
这样,光标会在上下两个窗口之间切换。
*分割一个窗口载入另外一个文件:
输入“C-x 4 C-f <你的文件名>”
*当你处于recursive edit level的时候,你不能够利用C-g来取消命令了,那么你需要利用<Esc><Esc><Esc>(或者更多次)来取消,据说这个模式下会用方括号把模式括起来,例如用[(Fundamental..)]替代(Fundamental)但是实际上我看似乎不是这样啊?
##########阅读至995行
#######
*如何获得更多的帮助:
输入“C-h ?”
或输入“M-x help <Return>”
一般用第一个,如果第一个不好用,就用第二个,<Return>表示回车。
*查看某个命令按键或者命令次序简单的帮助:
假设查看C-p的信息:
输入:"C-h c C-p"
这里,会显示一条描述该命令(C-p)的简短信息。关键是先输入"C-h c",再输入命令。
*查看某个命令按键或者命令次序详细的帮助:
假设查看C-p的信息:
输入:"C-h k C-p"
这里会显示该命令(C-p)的详细信息。关键是输入“C-h k”,再输入命令。
##########阅读至1050行
#######
20090808
*查找一个函数的功能:
输入“C-h f”
然后输入一个特定的emacs函数。
*列出部分匹配:
输入"C-h a"
之后,输入一个词,会列出包含这个词的所有命令(meta键激起的)
*在线info手册:
输入"C-h i"
这样,会打开info如果查看emacs输入“m emacs”,如果不知道作甚么,那么输入'?'可以显示一些info基本的操作。