emacs中文.docx

上传人:b****8 文档编号:10036017 上传时间:2023-02-08 格式:DOCX 页数:20 大小:202.87KB
下载 相关 举报
emacs中文.docx_第1页
第1页 / 共20页
emacs中文.docx_第2页
第2页 / 共20页
emacs中文.docx_第3页
第3页 / 共20页
emacs中文.docx_第4页
第4页 / 共20页
emacs中文.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

emacs中文.docx

《emacs中文.docx》由会员分享,可在线阅读,更多相关《emacs中文.docx(20页珍藏版)》请在冰豆网上搜索。

emacs中文.docx

emacs中文

参考书目:

1.GNUEmacsManual(Emacs官网有下)

2.O'RellyLearningGNUEmacs,3rdEdition

一、Emacs的安装使用

    学习软件的第一件事当然是把它下下来,http:

//ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.1-bin-i386.zip目前最新版23.1,这个版本号够吓人的,Opera的10.0还不及别人的一半。

本人不幸,使用的是Windows版本。

    安装过程异常简单,直接解压就行,但路径中不能包含空格,所以就表往ProgramFiles文件夹下面丢了,我是直接放在根目录的,找起来也方便。

运行bin目录下的addpm.exe可以添加开始菜单快捷方式。

也可以直接运行runemacs.exe来启动Emacs。

    卸载也很方便,Emacs不会对系统写任何垃圾东东,直接删除文件夹即可卸载,还有你的快捷方式。

    启动Emacs后的界面如下:

     猛的一看,没什么太出彩的地方,感觉比较简陋。

上面依次是标题栏、菜单栏、工具栏,中间一大块就是编辑文本的地方,下面两行是modeline和echoarea。

     echoarea是你输入命令和显示消息的地方。

     在modeline中第一个字符表示字符集,c代表chinese-gbk,后面那个\符号表示换行类型,\是指DOS的CRLF换行,另外还有Unix的LF换行和Mac的CR换行。

然后一个字符,表示打开的文件是否可写(先称为文件便于理解,实际上是buffer),%表示只读,-和*表示可写。

再一个字符表示文件是否已写,%或-表示还没动,*表示已经更改。

这两个字符组合起来有四个状态。

符号

表示

%%

只读,未更改

--

可写,未更改

**

可写,已更改

%*

只读,已更改

    再后面一个-表示路径,后面黑体的*GNUEmacs*表示buffer的名称。

后面的All表示光标的位置,当文件在一页就能显示完的时,这里是All,此外还有Top,Bot,以及当前位置百分比。

L5表示第五行。

Fundamental是模式名,模式种类很多,这个以后介绍。

    如果是第一次使用,点击EmacsTutorial,里面也有Emacs的一些基本介绍,而且是中文。

二、Emacs按键

    Vim把控制和编辑分成了两个模式,单独操作,互不影响。

而Emacs是同时进行编辑和控制,只不过控制命令需要使用控制键。

    Emacs的控制键就三个Control,Shift和Meta,Control和Shift键盘上都有,Meta在美式键盘中就是Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有Alt(这个要某些欧洲人才会遇到)可以使用Esc代替,另外Esc不想Alt通常当组合键用,它要单独按一下,再按另外的。

    以后控制命令就这样表示:

   

    C-f      Ctrl+f

    C-M-f  Ctrl+Alt+f

    C-_   Ctrl+Shift+-

    Emacs中,这些组合键其实是一些函数的快捷方式,比如C-n是next-line的快捷方式。

我们除了使用组合键意外,还可以直接调用函数。

按下M-x,然后输入函数名就可以调用函数了。

三、进入退出Emacs

  进入前面已经说了,现在说怎么退出。

  最直接的办法,点右上角的叉,当然这个没什么技术含量。

     比较文明的方法,C-xC-c,如果当前文件已经修改会问你是否保存。

  野蛮点的方法,调用函数kill-emacs,即M-xkill-emacs,直接退出,不管是否修改。

  不过直接退出后,Emacs会在相同目录下保留一个以#号开头结尾的相同文件名文件,下次启动可以使用M-xrecover-file来恢复。

如果是多次保存后,还会有个以~结尾的文件,保存了上次信息。

上回开了个头,简单的介绍了Emacs的一些基本常识,这回继续说基本常识,怎么移动你的光标。

可能有人会说,这上下左右键不是很好用吗,还用你来讲。

呶,Emacs的强大在于你能够只使用键盘左边那堆键来完成任何事情(不包括顶上的ESC和Function),这也是Emacs的设计宗旨。

  为了试验这些按键,大家在进入Emacs时选择页面中间的EmacsTutorial,这里面可以随便乱按不用担心出什么岔子。

一、基本导航

  看下面这张图片:

  

  可以这么记,p-previous,n-next,b-backward,f-forward。

这里所说的字符对于E文,就是一个字母,而中文是一个汉字,其实Emacs对中文支持还是很厚道的,后面慢慢可以看出来。

不过在这儿我个人感觉这个光标移动没有Vim方便,别人就HJKL,一个键就能动了,这需要两个,Ctrl有时还觉得按着很别扭,不太和谐呀。

  在按C-n时,如果越过了页尾,不像一般Windows编辑器是往下滚一行,而是往下滚半夜,当前光标会置于页面中间。

C-p也是一样的。

  另外两个使用较多的是C-v往下翻页,M-v往上翻页。

呃,还有一个C-l就是把当前行提到页面中间,感觉Emacs对页面中似乎情有独钟啊。

二、中级导航

  按字符移的上节说了,然后说按单词移动:

  M-f向前移动一个单词,Emacs理解的中文单词是两个标点符号之间的东西,所以中文就是移到下一个标点符号的位置。

往回是M-b,向后移动一个单词。

  C-a移动到行首,C-e移动到行尾。

  M-a移动到句首,M-e移动到句尾,在中文中一般就是跑到句号的位置,这里我不得不说一下,现在很多年轻人写文章有一逗到底的习惯,就只在文章最后加个句号,如果用Emacs来看你的文章,一个M-e啥都不用干了。

作为一个有一定文学素养的人,在此我严厉反对这种写文章的作风,不和谐。

  M-}移动到下一段,M-{移动到上一段。

  还有两个跑的更快的导航,M-<移到文档首,这里要注意是小于符号<,不是逗号,,所以我们是按Alt+Shift+, 切记。

移到文档尾是M->。

  C-x[和C-x],分别是往上一页和往下一页。

这里页是由分页符控制的,在EmacsTutorial中是没有分页符的,所有这两个键会跑到文档头和文档尾去。

  例图:

  阴影处是当前光标的位置,其它箭头所指是按相应键后光标的位置。

三。

高级导航

  可以这么来看基本导航是普通人用的,中级导航是高手采用的,高级导航是砖家、叫兽用的。

  M-r移动到页面中间行首位置,hollyshit,又是页面中间,真XX阴魂不散。

  M-xgoto-char(n),这个比较复杂,先按M-x,然后空格输goto-char回车,另外Emacs有Tab键补全功能,大家可以试试,如果有多个选项会有提示,最后输入一个整数。

这个东西会移动到从头数第n个字符的位置,我估计不会有人变态到能记住每个字是第几个字符。

  M-gM-g[n],按两次M-g,不用回车,提示输入一个数字,移动到指定行n,两个M-g,也可以输M-gg。

  还有一个比较罕见的,C-xC-n,这个是设置当前列为目标列。

这是什么意思呢,本来我们按C-n和C-p时,光标会往下或往上移一行,而列的位置就是当前光标列的位置,除非下一行列没那么多(就是字符没那么多),光标会到距当前列最近的列。

而我们可以用这个组合键重新设一个目标列,这样在按C-n和C-p时,光标会跑到我们设的目标列上。

如果你不幸按了,而且又不习惯,可以使用C-uC-xC-n来取消目标列设置。

补充一点,这两个命令都是禁用命令,是Emacs考虑大家多半不会用,而且比较怪的命令,所以通常就禁用了,你不小心调出时会给出提示问你是否需要继续。

就像这个样子:

  大家按个空格稍微试下就行了。

  最后还有两个重复命令:

  M-n,n是数字,意思是重复下个命令n次,比如M-3C-f,就是向前移三个字符。

  C-un,n还是数字,也是重复下个命令n次。

如果省略n,就是4次。

按两次C-u,就是重复16次。

小结:

按键

命令

作用

C-f

forward-char

向前一个字符

C-b

backward-char

向后一个字符

C-p

previous-line

上移一行

C-n

next-line

下移一行

M-f

forward-word

向前一个单词

M-b

backward-word

向后一个单词

C-a

beginning-of-line

移到行首

C-e

end-of-line

移到行尾

M-e

forward-sentence

移到句首

M-a

backward-sentence

移到句尾

M-}

forward-paragraph

下移一段

M-{

backward-paragraph

上移一段

C-v

scroll-up

下移一屏

M-v

scroll-down

上移一屏

C-x]

forward-page

下移一页

C-x[

backward-page

上移一页

M-<

beginning-of-buffer

移到文档头

M->

end-of-buffer

移到文档尾

M-ggn

goto-line

移到第n行

(none)

goto-char

移到第n个字符

C-l

recenter

将当前位置放到页面中间(Emacs最喜欢的地方)

M-n

digit-argument

重复下个命令n次

C-un

universal-argument

重复下个命令n次,n默认为4

注:

这里命令这列就是按了M-x后输的东东。

 

上回说到怎么在Emacs中移动光标,这回将介绍如何在Emacs中编辑文本。

任何一款文本编辑软件的核心功能当然就是编辑文本,Emacs也不例外,虽然它也有许多其它强大的本领,但都离不开文本编辑。

闹,文本编辑说白了也就是打字,专业点说我们需要实现一种所见即所得输入方式。

在Emacs中打字和Notepad中没什么区别,一样也是打开一个文件直接往里面敲字符就可以了,中文也行。

这个和Vim区别比较大,我们还需要知道自己是在哪个模式下,不然乱敲一气也不见屏幕有什么反应。

一、文件操作

  刚才我们说到编辑文本就是打开一个文件往里面敲字符,所以我们第一件事就是打开一个文件。

  C-xC-f输入这个命令后在回显区会看到一个提示“Findfile:

”,然后是我的文档的路径,这时需要输入你编辑的文件的名称。

注意,这里的输入的文件名可以包含路径,比如D:

\text.txt,或者是相对路径。

还有就是在Windows中我们可以使用Windows风格的反斜杠"\",当然了也可以使用正斜杠"/"。

如果输入了一个新的路径,Emacs的当前路径会跳转到你输入的地方,(实际上是新开了一个buffer)。

如果Emacs没找到你输入的文件,它会以你输入的名字自动新建一个文件。

另外Emacs还支持拖拽,就是说可以把文件图标拖到Emacs中来打开它。

  当你不小心错打开一个文件时,可以使用C-xC-v来换一个,操作和C-xC-f一样,这个区别嘛是Emacs在buffer中处理有些不同。

  C-xC-s这个命令是用来保存文件的,另存是C-xC-w,这两个都比较简单,一看就会。

二、输入文本

  除了一些基本的输入方式,Emacs还可以输入非打印字符,就是ASCII表中前面的那些字符。

  使用C-q(n),这里的n代表一个八进制数,就能打出n对应的ASCII表中的符号。

  还有就是Unicode字符比如日文啊韩文啊,使用C-x8后面接Unicode标准中字符的名字或者编码就可以输出这个乱七八糟的东西了。

这我相信不会有谁闲的无聊来记这种一长串数字的,而且我们有更为先进的方案,(广告时间)当。

当。

当。

,现在隆重推出Unicode字符超级输入工具——搜狗软键盘,省去了你记忆一大堆16进制数的烦恼,还能输入中文,实在是居家旅行必备良品。

三、删除文本

  相比输入,Emacs删除文本的花样就比较多了。

  Backspace,退格键,这个比较传统就不说了。

  Del键,删除光标处的字符,虽然这个也很常见,但它违背了Emacs的原则,“你的手不用离开主键盘区”,所以我们用C-d来代替。

  M-d,这个用来删除一个单词(记住在中文中单词表示两个相邻标点符号中的句子,所以如果你是打中文这个键还是少用,稍不留神多长一截句子就不见了)。

而且它删除的是从光标当前位置到单词结束,还会把单词前半截留给你。

  相对应,删除单词前半截可以用,M-Backspace。

  M-k,删除一段句子,这个在中英文有些不同。

中文里面它只会删除到句号为止,包括句号。

而英文中,它不认'.','!

‘,这些东西,而是把整段都删了(英文的分段用两个回车表示)。

和M-d一样,它也是从光标处开始删。

对应删回去是C-xBackspace。

  C-k,从光标起删除当前行。

  一个比较详细的例子见下图:

(宽线覆盖的文字就是使用箭头指向的命令删除的部分,注意中英文的区别)

四、撤销命令

  操作难免有失误之处,Windows里面Ctrl+z命令使用频率也是蛮高的,不过在Emacs中按Ctrl+z会发现窗口最小化了。

Emacs中要达到撤销效果使用的是C-/,同样还可以使用C-_或者C-xu,这三个都对应的是Undo命令。

  和Vim类似,Emacs中删除的内容也保存在一个缓冲中,相当于一个剪贴板,我们可以很方便的调出某一次放进去的东西,这个地方我还没仔细看,放到以后再讲。

  上面说的是撤销文本上的操作,还有个比较常用的命令C-g,这个是用来撤销命令的,当你输了一半命令发现不对就可以用它了。

五、一些杂项命令

  有些比较零碎的命令又比较常用,呃,其实应该放到第一章的,先搁在这儿吧。

  帮助命令:

  C-ht调出EmacsTutorial。

  C-hr调出EmacsManual。

  C-hk(command),调出对应command的帮助,比如C-hkC-n就是查看C-n的帮助。

  空白行:

  插入空行,C-o。

删除空行C-xC-o,注意,如果有许多空行时,这个命令会删的只剩一个空行,只有一个就直接删了。

这两个命令并不是完全对应,插入空行实际是插入一个回车换行符,而删除空行的标准是这一行什么文字都没有才删了,如果我们在一行文字中间按C-o,光标后面的内容会移到下一行,再按C-xC-o却没有反应,因为这行前面还有内容。

  重复命令:

  上章介绍两个数字参数的重复命令,这儿还有一个不带数字参数的。

C-xz,这个命令的对象是它前面输的命令,比如,先按C-n,再按C-xz,就会重复一次C-n,然后我们每按一次z,就再往下走一行,相当方便。

小结:

按键

命令

作用

C-xC-f

find-file

打开文件

C-xC-v

find-alternate-file

打开另一个文件

C-xC-s

save-buffer

保存文件

C-xC-w

write-file

另存文件

C-q(n)

quoted-insert

插入字符,n表示字符的八进制ASCII码

C-x8

ucs-insert

插入Unicode字符

C-d

delete-char

删除光标处字符

Backspace

delete-backward-char

删除光标前字符

M-d

kill-word

删除光标起单词

M-Backspace

backward-kill-word

删除光标前单词

C-k

kill-line

删除光标起当前行

M-k

kill-sentence

删除光标起句子

C-xBackspace

backward-kill-sentence

删除光标前句子

(none)

kill-paragraph

删除光标起段落

(none)

backward-kill-paragraph

删除光标前段落

C-/

undo

撤销

C-_

undo

撤销

C-xu

undo

撤销

C-g

keyboard-quit

撤销命令

C-ht

help-with-tutorial

调出EmacsTutorial

C-hr

info-emacs-manual

调出EmacsManual

C-hk(command)

describe-key

查看对应command帮助

C-o

open-line

插入空行

C-xC-o

delete-blank-line

删除空行

C-xz

repeat

重复前个命令

 

上回介绍了在Emacs中如何插入删除文本的简单操作,以及一些杂七杂八的命令,都还是蛮容易的。

这回先跳过编辑这部分,介绍Emacs中的Minibuffer,呃,翻译过来叫迷你缓冲,听着比较难受,后面还是用E文吧。

一、初识Minibuffer

  Minibuffer乃是Emacs命令读取复杂参数的位置。

比如说文件名,缓冲名,命令名以及Lisp表达式这些东西。

Minibuffer显示在echoarea中,当Minibuffer处于使用状态时,会出现一个彩色的提示符并以冒号结尾,根据提示符信息输入参数,以回车提交。

取消Minibuffer使用C-g,也就是上节介绍的取消命令。

  其实Minibuffer并不是太神秘,最常见的地方就是打开文件时提示我们输入文件名:

  按下C-xC-f后,回显区就会变成这个样子,其中Findfile就是Minibuffer的提示符,因为它是蓝色的。

后面的路径是Minibuffer自动添加的默认值,我们可以把参数选项insert-default-directory设置为nil,关闭这个默认路径。

  这里插入一下如何设置Emacs参数选项,我们键入M-xset-variableRETinsert-default-directoryRET后输入nil即可,这里的RET代表回车。

改回默认,前面输入一样最后输入t。

其实我们按下M-xset-variable也激活了Minibuffer。

  

二、在Minibuffer中编辑

  我们可以将Minibuffer看成和主输入区类似的缓冲,Minibuffer中也有个buffer嘛,就是说某些主输入区的命令Minibuffer也可以用。

同样我们看上面那张图,使用C-a可以把光标移到d字符的位置,再按C-e光标又回到最后,还可以使用M-Backspace删除“info/”回到上级目录。

不过需要注意的一点是,RET是Minibuffer的结束符而不是换行符,所以如果我们需要插入新行就不能使用回车,而是用C-o。

同样对于TAB、SPC、?

(前两个分别对应Tab键和空格键)在Minibuffer中经常用于自动补全,所以也不能直接输入,我们需要使用C-q来插入,比如TAB,就用C-qTAB来替换。

可以说Minibuffer和主输入区基本上一样,同样的快捷键、同样的操作方式,复制粘贴功能一应俱全。

  通常情况,Minibuffer在屏幕中只有一行,随着你输入的增多,Minibuffer会自动调整大小来适应。

变量resize-mini-windows用于控制Minibuffer的大小变化,其默认值是grow-only,大小只增不减,设为t后,如果你删除一行会自动缩小,设为nil,就不会动了。

变量max-mini-window-height控制Minibuffer高度的最大值,设为浮点数表示占整个窗口的百分比,整数表示最大可以有多少行。

默认值是0.25。

  当我们操作Minibuffer时也可以控制另一个窗口,C-M-v命令就是用来滚动另一个窗口的文本,这个是往下翻页,C-M-S-v是往上翻页,大家要看清楚,这不是四个键一起按,如果你不小心按的是s键,你会发现出来的是QQ聊天窗口,所以出于对中国广大QQ用户的考虑,Emacs把它改成了大写的s,就是说还要加上Shift键,呃,这是我目前见的最长的按键了而且比较变态。

其实,也有简洁的方式,M-PageUp和M-PageDown,不过这两个键不在主键盘区,就看各位心情了。

  Minibuffer一般情况是不允许递归调用的,也就是我们不能连按两次C-xC-f,它会提示Minibuffer正在使用,我们也可以设置变量enable-recursive-minibuffers为t来激活递归调用,不过容易引起错误,大家还是尽量避免吧。

三、自动补全

  Emacs中的命令有那么多,我们也不可能每一个都记的住,电脑里的路径也很长,记漏几个字符也很正常,这个时候自动补全就显得很重要了。

常用的自动补全有四个键TAB、SPC、RET和?

我们先看它们的准确定义。

  TAB    尽可能的补全Minibuffer中的字符,如果没有满足要求的,则列出所有可能的补全。

对应命令minibuffer-complete。

  SPC    最多补全Minibuffer中的一个词,如果没有满足要求的,则列出所有可能的补全,在输入路径时SPC不可用。

对应命令minibuffer-complete-word。

  RET    提交Minibuffer中的文本,或者选取第一个可能的补全提交。

对应命令minibuffer-complete-and-exit。

  ?

     列出所有可能的补全。

对应命令minibuffer-completion-help。

  下图就是我们按insTABTAB后自动补全的例子:

  第一个TAB补全了“ert-”,第二TAB列出了所有可能的补全。

  再仔细解读下这几个键,TAB是用的最多的自动补全,可以说每个操作系统的shell都支持TAB自动补全,它的设计目标也是尽可能的补全我们的输入,而一次补全需要满足下面三个准则:

∙光标前Minibuffer中的文本必须和补全候选项中开头的内容一致,如果光标后还有文本则其需为补全候补项剩下内容的字串。

∙如果不满足上一条件,则使用部分匹配补全,即将Minibuffer中的文本以"-"或者空格分开,分别补全。

比如输入"em-l-m",再按TAB,则会补全至"emacs-list-mode"。

∙如果仍无满足的候选项,则继续使用第一条准则,不过忽略光标后的文本。

  空格键的匹配模式与TAB类似,不过它只匹配到下一个"-"或者空格,比如输入auto-f后按空格会完成auto-fill-,需要再按一个空格才会完全补全为auto-fill-mode。

此外,在TAB和SPC的匹配当中可以使用通配符"*",代表任意一个或多个字符。

  在没有完全匹配项时,Emacs会列出所有满足条件的匹配,我们可以使用多种方法来选择某一项。

  Mouse-1,Mouse-2,就是鼠标左右键。

  或者在Minibuffer中按M-v,就会切换到补全候选项窗

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1