ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

#

在不同的major-mode中的特殊键绑定。我们可以用C-h m查看详细的情况。
在mode中总是用C-c做前命令来指定特殊的函数。我们可以用C-c C-h来查看已经存在绑定的函数。
posted @ 2005-11-09 14:49 ivaneeo 阅读(245) | 评论 (0)编辑 收藏

你光标在window里的位置叫point。而mark在buffer里的位置。
我们可以让emacs高亮显示。(在.emacs里添加(transient-mark-mode t))从point到mark的区域。如下:
best of the world
我们还可以交换point和mark之间的位置。(C-x C-x)

posted @ 2005-11-09 14:35 ivaneeo 阅读(268) | 评论 (0)编辑 收藏

1。你可以在当前目录建一个emacs的目录。
    $mkdir emacs
2。把你的脚本考到那个目录下。
    例如:$cp -v sams-lib.el ~/emacs
3。编辑默认的脚本.emacs
    $vi ~/.emacs
加入下面内容:
    (setq load-path (cons "~/Emacs" load-path))
    (require 'sams-lib)

(load "refcard")
这行确保sams-lib.el中的一个函数被载入。

posted @ 2005-11-09 12:13 ivaneeo 阅读(332) | 评论 (0)编辑 收藏

在你按下 C-s 之后,你会发现回显区里有“I-search”字样出现,这是在提示
你目前 Emacs 正处于“渐进搜索”状态,正在等待你输入搜索字串。<Return>
会结束搜索。

>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
   慢慢输入“cursor”整个词,每敲一个字就暂停一下,注意观察光标。
   现在你应该已曾经找到“cursor”这个词了。
>> 再按一次 C-s,搜索下一个“cursor”出现的位置。
>> 现在按四次退格键,看看光标是如何移动的。
>> 敲 <Return> 结束搜索。

刚才看仔细了么?在一个渐进式搜索中,Emacs 会尝试跳到你输入的字符串的出
现位置。想跳到下一个搜索目标出现的位置,只要再按一次 C-s 就行了。如果找
不到,Emacs 会发出“哔”的一声,告诉你搜索失败。在整个过程中,都可以用
C-g 来终止搜索。【你会发现 C-g 之后光标回到了搜索开始前的地方,而
<Return> 会让光标留在搜索结果上,这是很有用的功能。】
--------------------------------------------------------------------------------------------------

Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”,意思是搜
索与输入同时进行:你在这边一个字一个字地输入你想搜索的东西,同时 Emacs
在那边就替你搜索了。

C-s 是向前搜索,C-r 是向后搜索。
posted @ 2005-11-08 17:10 ivaneeo 阅读(232) | 评论 (0)编辑 收藏

如果你修改了一个文件但是还没来得及存盘,然后你的计算机罢工了,那么你编
辑的东西很可能就找不回来了。为了避免这样的不幸一再发生,Emacs 会定期将
你正在编辑的文件存入一个“自动保存”文件中。自动保存的文件名的头尾各有
一个“#”字符,比如你正在编辑“hello.c”,那么它的自动保存文件就叫
“#hello.c#”。在你正常存盘之后,Emacs 会删除自动保存文件。

假如不幸真的发生了,你大可以从容的打开原来的文件(注意不是自动保存文件)
然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提示确认的
时候,输入 yes<Return> 就行了。
posted @ 2005-11-08 16:10 ivaneeo 阅读(324) | 评论 (0)编辑 收藏

Emacs 的命令就像天上的星星,数也数不清。把它们都对应到 CONTROL 和 META
组合键上显然是不可能的事情。Emacs 用扩展(eXtend)命令来解决这个问题,
扩展命令有两种风格:

        C-x     字符扩展。  C-x 之后输入另一个字符或者组合键。
        M-x     命令名扩展。M-x 之后输入一个命令名。

-------------------------------------------------------------------------------------------------------
C-x 的扩展命令有很多,下面列出的是你已经学过的:

        C-x C-f         寻找文件。
        C-x C-s         保存文件。
        C-x C-b         列出缓冲区。
        C-x C-c         离开 Emacs。
        C-x 1           关掉其它所有窗格,只保留一个。
        C-x u           撤销。

用命令名扩展的命令一般都不太常用,或者只在部分模式下被用到。比如
replace-string(字符串替换)这个命令,它会在全文范围内把一个字符串替换
成另一个。在你输入 M-x 的时候,Emacs 会在屏幕底端向你询问,然后你应该输
入命令名。如果你想输入“replace-string”,其实只需要敲“repl s<TAB>”就
行了,Emacs 会帮你自动补齐的。输入完之后按 <Return> 。

字符串替换命令需要两个参数——被替换的字符串和用来替换它的字符串。每个
参数的输入用换行符来结束。

>> 将光标移到本行的下两行空白,然后输入
   M-x repl s<Return>changed<Return>altered<Return>。

   【为了继续练习,保留一行原文如下:
   Notice how this line has changed: you've replaced... 】

请注意这一行是怎么改变的:在光标之后的范围内,你已经将“changed”这个
词——不管它在哪里出现——全部用“altered”替换掉了。
posted @ 2005-11-08 16:06 ivaneeo 阅读(248) | 评论 (0)编辑 收藏

如果你用 C-x C-f 找到第二个文件,第一个文件仍然会在 Emacs 里。要切回第
一个文件,你可以 C-x C-f 再次寻找它。这样,你可以在 Emacs 里同时打开很
多文件。

>> 用 C-x C-f foo <Return> 的方式建立一个名为“foo”的文件。
   然后敲入一些文字,再用 C-x C-s 保存文件“foo”。
   最后,输入 C-x C-f TUTORIAL.cn <Return> 回到这里。
-----------------------------------------------------------------------------------------------
Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻
找到一个文件,Emacs 就在其内部开辟一个缓冲区。用下面的命令可以列出当前
所有的缓冲区:

        C-x C-b   列出缓冲区

>> 现在就试一下 C-x C-b

观察一下缓冲区是如何命名的,它很可能跟其对应的文件同名。事实上,你在一
个 Emacs 窗格里看到的任何文字都是某个缓冲区的一部分。

>> 输入 C-x 1 离开缓冲区列表

不管存在多少缓冲区,任何时候都只能有一个是“当前”缓冲区,也就是你正在
编辑的这个。如果你想编辑另外一个缓冲区,那么你必须“切换”过去。上面讲
过,用 C-x C-f 可以切换到某个文件对应的缓冲区。不过还有一个更简单点的办
法,那就是用 C-x b。用这个命令,你必须输入缓冲区的名称。
-----------------------------------------------------------------------------------------------
C-x s   保存多个缓冲区

C-x s 会找到所有已被修改但尚未存盘的缓冲区,然后向你逐个询问,是否需要
存盘?

>> 插入一行文字,然后输入 C-x s。
   它应该会问你,是否要储存名为 TUTORIAL.cn 的缓冲区?
   按“y”告诉它你想存盘。
posted @ 2005-11-08 14:51 ivaneeo 阅读(208) | 评论 (0)编辑 收藏

寻找文件的命令有一个特别之处,那就是你必须给出文件名。我们称这个命令
“从终端读入了一个参数”(在这里,这个参数显然就是文件名)。当你输入了
这个命令之后:

        C-x C-f   寻找一个文件

Emacs 会提示你输入文件名。你输入的文件名会出现在屏幕最底端的一行,这一
行被称为小缓冲(minibuffer),在小缓冲里你可以使用通常的 Emacs 编辑命令
来编辑文件名。

在小缓冲里输入文件名(其实输入别的东西也一样)时可以用 C-g 取消。

>> 输入 C-x C-f,然后输入 C-g
   这会关掉小缓冲,同时也会取消使用小缓冲的 C-x C-f 命令。
   当然了,你也没有找任何文件。

输入完文件名之后用 <Return> 结束,然后 C-x C-f 命令开始工作并找到你指定
的文件。小缓冲在 C-x C-f 命令结束之后也会消失。

眨眼间文件就会显示在屏幕上,你可以开始编辑了。存盘用这个命令:

        C-x C-s   储存这个文件

这个命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文
件重命名以保留原文。重命名的规则通常是在原文件名之后添加一个“~”字符。

存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这
样在系统崩溃或者死机的时候你不会损失太多。
posted @ 2005-11-08 14:40 ivaneeo 阅读(201) | 评论 (0)编辑 收藏

如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:
C-x u。

通常 C-x u 会消除一个命令所造成的所有改变;如果你在一行中连续多次地使用
C-x u,你会把以前的命令也依次撤销。

但是有两个例外:
1) 没有改变文字的命令不算(包括光标移动命令和滚动命令)
2) 从键盘输入的字符以组为单位——每组 20 个字符——来进行处理。
    (这是为了减少你在撤销“插入文字”动作时需要输入 C-x u 的次数)

>> 用 C-k 将这一行移除,然后输入 C-x u ,它会再次出现。

C-_ 也是撤销命令;它的作用跟 C-x u 一样,但是它比较容易多次输入。C-_ 的
缺点是在某些键盘上可能不太容易按,这也正是我们同时提供 C-x u 的原因。在
某些终端上,你可以按住 CONTROL 再按“/”来输入 C-_。

数字参数对于 C-_ 和 C-x u 的意义是执行撤销的重复次数。
posted @ 2005-11-08 13:57 ivaneeo 阅读(253) | 评论 (0)编辑 收藏

你可以用 <Delback> 来删除最后输入的的一个字符,这个跟你在 Emacs 之外的
用法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大号
键,通常被标示为“Delete”、“Del”或者“Backspace”。


下面是一个关于“删除”操作的小结:

        <Delback>    删除光标前的一个字符
        C-d          删除光标后的一个字符

        M-<Delback>  移除光标前的一个词
        M-d          移除光标后的一个词

        C-k          移除从光标到“行尾”间的字符
        M-k          移除从光标到“句尾”间的字符

【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
文会有详细说明。】
-----------------------------------------------------------------------------------------------------
你也可以用一种统一的办法来删除缓冲区里的任何一部分:首先把光标移动到你
想要删除的区域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意,
C-SPC 往往被中文用户设定成输入法热键,如果这样,C-SPC 就被系统拦截而无
法输入给 Emacs 了,因此这里还是推荐使用C-@。】,然后再移动到另一端,再
按 C-w 就可以把位于这两点之间的所有文字删除了。

>> 移动光标到上一段开头的“你”字。
>> 输入 C-@ 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。
>> 移动光标到第二行中的“端”字。
>> 输入 C-w,就会把从“你”开始到“端”之前的文字全部删除。

注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以找回
来,而被删除的就不行了。【实际上,移除掉的东西虽然看起来“消失”了,但
实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还
在内存里,但是已经被Emacs“抛弃”了,所以就找不回来了。】重新插入被移除
的文字称为“召回(yank)”。一般而言,那些会去除很多文字的命令会把去除
掉的文字储存起来(它们被设定成了“可召回”),而那些只是去除一个字符或
者只是去除空白的命令就不会储存那些被去除掉的东西(因此你就无法召回)。

-----------------------------------------------------------------------------------------------------
>> 移动光标到一非空白行的行头,然后输入 C-k 移除那一行上的文字。

>> 再次 C-k,你可以看到它移除了跟在那一行后面的换行符。

注意,单独的 C-k 会把一行的内容移除,而第二个 C-k 则会移除换行符,并使
其后所有的行都向上移动。C-k 处理数字参数的方式很特别,它会把参数指定的
那么多行连同其后的换行符一起移除,而不仅仅是重复 C-k 而已。比如 C-u 2
C-k 会把两行以及它们的换行符移除;而如果只是输入 C-k 两次显然不是这个结
果。
-------------------------------------------------------------------------------------------------------
将被移除的文字恢复的动作称为“召回(yanking)”。(就好像你把别人从你身
边移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别
的地方召回,还可以多次召回同样的文字以得到它的多个拷贝。

召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。

>> 试试看,输入 C-y 将文字召回。

如果你一次连按了好几下 C-k,那么所有被移除的行会被存储在一起,只要一个
C-y 就可以把它们都召回。

>> 在这里试试,连续按几次 C-k。

现在再来恢复刚刚被我们移除的文字:

>> 按 C-y。然后把光标往下移动几行,再按一次 C-y。
   现在你应该知道怎么复制文字了。

C-y 可以把最近移除的文字召回,但如果你想召回的东西不是最近移除的,该怎
么办呢?它们当然没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除
的文字之后,紧接着再用 M-y 就可以召回再前一次被移除的文字,再按一次
M-y 又可以召回再上一次的,因此只要多按几次 M-y 就可以找到你想要召回的东
西了。找到了之后,你什么也不用做,把它们晾在那里,继续你的编辑就行了。

如果你一次按 M-y 按了很多下,你可能会回到起始点,也就是最近移除的文字。
【看得出这实际上是一个环。】

>> 移除一行,移动一下光标,然后再移除另外一行。
   按 C-y 将第二次移除的那行召回来。
   紧接着再按 M-y,它将会被第一次移除的那行取代。
   试着再按几下 M-y 看看会发生什么。
   再继续,直到第二行被召回来,然后再做个几次。
   如果你愿意,你可以试着给 M-y 指定一个正的或负的参数。
posted @ 2005-11-08 13:54 ivaneeo 阅读(276) | 评论 (0)编辑 收藏

仅列出标题
共67页: First 上一页 32 33 34 35 36 37 38 39 40 下一页 Last