在这里我们将会学会如何插入和删除文本,在Emacs中进行移动,剪切和粘贴,装入和保存文件.我们还会谈到一些在我们要读入一个新文件时要用到的有用的函数功能.
插入和删除文本:
在Emacs中插入和删除文本就如我们在打印机上输入文本一样的简单,我们只是简单的输入我们要输入的文本.这样的输入方式是和我们在Vim中所见到的输入方式是不一样的,因为在Vim我们要插入模式下输入文本,而在Emacs中不是这样的.
在Emacs中我们可以有几种不同的方式来删除文本.最简单的方法就是按下Backspace键或者是Delete键.在大多数的Emacs安装中Backspace会删除前一个字符而Delete会删除后一个字符.如果这样的方法不能删除字符,我们可以使用C-d(delete-char)来删除字符.
输入时自动断行:
当我们在Emacs中输入文本直到一行的结束时,Emacs并不会为我们断开这一行,相反他会表明会在下一行继续并且在下一行中我们可以继续来输入.在这个标记继续的符号会出现在一个文本的最后一列.而我们可以通过下面的方式来使得Emacs可以自动断行.我们按下M-x然后输入aotu-fill-mode
在Emacs中进行移动:
在Emacs中我们可以有几种方式来进行移动.我们可以用小方向键来在Emacs中进行移动,我们也可以通过page-up,page-down来在页间进行跳转.
如果我们的小方键不可以进行了工作了,我们还可以用下面的方法来进行移动:
向前一个字符:C-f (forward-char)
向后一个字符:C-b (backward-char)
向上一行:C-p (previous-line)
向下一行:C-n (next-line)
向前滚动一页:C-v (scroll-up)
向后滚动一页:M-v (scroll-down)
在缓冲区的末尾新加一个空行:
当我们已经到了缓冲区的最后一行时我们希望Emacs如何来做呢?这里两个可能的方法:一是加入一个行并移动这一行;二是响铃提示这样是不可以的.我们可以根据我们的个人爱好来选择一个解决方法:
如果我们要选择加入一个新行,我们可以将下面的一行加入我们的.emacs文件中:
(setq next-line-add-newlines t)
如果我们要选择响铃,我们可以将下面的一行加入我们的配置文件中:
(seq next-line-add-newlines nil)
Emacs为我们提供了许多的方法我们可以其中进行移动.我们并不需要马上知道所有的这些方法,重要的我们要知道他们存在.当我们需要他时我们可以用到.
我们可以用C-a (beginning-of-line)移动到一行的开头,用C-e (end-of-line)来移到一行的结尾.这些并不是太容易记住,但是当我们熟练了就不会觉得难了.
我们还可以以单词为单位向前或是向后移动.这要比按字符的方式移动要快得多,我们可以很容易的记住这些按键:Ctrl+右键(forward-word)向右移动,Ctrl+左键(backward-word)向左移动.
我们还可以用下面的一些按键进行移动:
向前一句:M-e (forward-sentence)
向后一句:M-a (backward-sentence)
向前一段:M-} (forward-paragraph)
向后一段:M-{ (backward-paragraph)
向前一页:C-x ] (forward-page)
向后一页:C-x [ (backward-page)
要了解更多的这样的功能以及句,段或是页结束的描述,我们可以输入C-h f (describe-function)然后输入功能名.
我们还要两个功能可以回到匹配的括号处,这个分别叫做forward-sexp,backward-sexp.这在编程的时候显得更为有用.我们可以将他们绑定到Meta-左键和Meta-右键.为了做到这一点我们可以将下面的两句加入我们的.emacs文件中:
(global-set-key [(meta left)] 'backward-sexp)
(global-set-key [(meta right)] 'forward-sexp)
有时我们可以通过指定的数字回到指定的行.这个可以使用goto-line命令,在XEmacs中我们可以通过M-g来做到,而在Emacs中我们也想要这样的做就要将下面的一句加入到我们的.emacs文件中:
(global-set-key [(meta g)] 'goto-line)
如果我们的窗口比较的乱或者是我们要将光标入在窗口的中央,我们可以按下C-l (recenter).这样就会重绘我们的窗口并将光标放在窗口的中部而不改变他在缓冲区中的位置.
剪切,复制,粘贴:
为标记我们要剪切或是复制的区域,我们可以使用鼠标或是键盘.
通过下面的例子我们可以学会如何使用用鼠标标记区域并将这个区域复制到剪粘板(在Emacs中称为kill-ring):
1将鼠标放在我们要标记的文本的开头
2按下鼠标左键同时拉动鼠标直到我们要复制的文本的结尾
3松开鼠标
4如果我们要将这些文本复制到剪刀粘板,也就是说并不从缓冲区中删除,选择编辑菜单并选择复制.如果我们要将这些剪切到剪切板中,也就是从缓冲区中删除,可以到编辑菜单中选择剪切.
当然如果我们在Emacs中操作,Linux中的复制方式也是同样适用的.
下面的例子可以使我们学会如何标记并复制区域文本:
1 将光标放在我们要选择的文本的开头.
2 按下Ctrl+Spacebar,在缓冲下部就会显示出文本标记
3 到我们要选择的文本的结尾处.
4
如果我们要复制到剪切板,我们可以按下M-w(kill-ring-save),如果我们要剪切,我们可以按下C-w(kill-region)
而我们最经常的做法却是使用鼠标来标记文本区域然后使用键盘来来进行剪切或是复制的操作.虽然在一开始看来这些键盘绑定比较难于记忆,但是我们还要是试着来这样做,因为这样的方法会使得我们和Emacs的交互更加的方便和快速.
我们可以使用鼠标或是键盘来进行文本的粘贴.如果要使用鼠标我们只是简单的在我们要粘贴文本的地方按下鼠标中键.要使用键盘,我们要将光标放在我们要粘贴文本的地方然后按下C-y
Emacs不仅会保存最后一次的选择而且会保存以前的一些文本的选择.这就使得我们将一些旧的选择放入我们的缓冲区中.要粘贴一个旧的文本选择,我们可以按下C-y,这就会将最一次的文本选择粘贴到缓冲区中.然后我们按下M-y(yank-pop),这就会用将倒数第二次的文本选择插入我们的缓冲区中.接下来的M-y可以用更旧的文本选择来替换.
如果我们在C-y和M-y之间按下其他的键,我们就不可能得到一些更旧的文本选择了.
如果我们正在使用GNU
,位于选择和粘贴之后.然而在XEmacs中却是不可以的.
除了命令C-w(kill-region),还有其他的一些命令可以删除缓冲区中的文本并将其放在剪切板中.最常用一个命令就是C-k(kill-line),他会将从当前光标处直到本行结束的文本移除并放入剪切板中.我们可以多次按下这个键,这样就可以移除多行文本并将其加入剪切板中.这样如果我们粘贴文本,所有的行就会做为一个整体进行操作.
我们在以前还谈到C-d命令可以删除下一个字符.这样另两个比较有用的命令就是M-d(kill-word)删除后一个单词,而M-DEL可以删除前一个单词(backward-kill-word).这两个命令都可以将删除的文本放入剪切板中.
另一个比较简单的插入方法就是插入一个文件夹.我们可以通过C-x i来做到.
编辑文件:
在Emacs中编辑一个文件最简单的方法就是我们在启动Emacs时用我们要编辑的文件名作为参数.当我们的Emacs正在运行时,我们可以通过C-x C-f来装入一个文件.
Emacs会将当前缓冲区的路径作为我们的开始路径.这个原因就是在大部的时间里我们要打开的文件与我们的当前编辑的文件处在同一个文件夹中.如果我们要查找的文件位于另一个文件夹中,我们可以编辑这个给定的路径.
双斜线(//)表明Emacs会忽略到当前点的内容并将剩余行的内容理解为从文件系统的根目录开始的路径.与其相同的/~/表明会忽略到当前点的内容并将此行剩余的内容理解为我们当前主目录下的目录路径.有时我们要打开一个位于其他文件夹中的文件,这样的方式就显得更为有用了.
如果我们所指定的文件并不在我们的硬盘上,Emacs就会将其理解为我们要编辑的新文件的名字.所以新建一个文件与打开一个并不存在的文件是相同的.当我们打开了一个并不存在的文件,Emacs会通过在minibuffer显示信息来提示我们这是一个新的文件.
下面也许是我们会打开一个并不存在的文件的原因:
1 我们要编辑一个新的文件.
2 我们输入了错误的文件名,也就是我们实际要编辑的是另一个文件.
在后一种情况下,我们要通过命令C-x k(kill-buffer)来杀掉为新文件所打开的缓冲区,然后再打开我们要编辑的文件.一个更好的办法就是我们可以按下C-x C-v (find-alternate-file),这个方法会同时完成上面的两步操作.
在这里我们要注意的就是在Emacs装入或是打开一个文件被称为finding a file.这是由于历史的原因.所以装入文件的命令是find-file而不是load-file.
要保存缓冲区,我们可以简单的使用C-x C-s (save-buffer).这样Emacs就会将当前缓冲区中的内容保存到我们原始装入的文件中.如果当前的缓冲区并没有与一个装入的文件相匹配,也就是说如果我们要将我们的启动Emacs时看到的初始缓冲区的内容写入一个文件,Emacs就会询问文件名.
也许有的时候我们会需要读入一个文件而希望将其以另一个文件名进行保存,这时C-x
就不能满足我们的要求了,因为这个命令会将我们的缓冲区保存到我们读入的文件中而不会询问另一个文件名.在这样的情况下我们可以使用C-x C-w (write-file),这样Emacs就会询问一个文件名并将缓冲区中的内容存入另一个文件中.如果我们正在编辑一个我们并没有从某一个文件读入的缓冲区时,我们也可以使用这样的方法来保存我们的工作.也就是说我们的打开我们的Emacs,然后输入了一些内容,我们就可以用这样的方法来保存我们所输入的内容.当我们完成我们的编辑工作,我们可以通过C-x C-c (save-buffers-kill-emacs).如果在我们的缓冲区中存在一些我们的并没有保存的内容,Emacs就会询问我们的是否要先保存这些内容.
多种多样的文件命令:
在这一部分我们将会学习如何来编辑一个位于远程机器人上的文件和如何来编辑一个压缩文件.如果我们确实是很匆忙的,我们可以先跳过这一部分,但是我们的一定要回过头看一下这一部的内容,因为在这里有一些非常有用的信息.
Emacs允许我们编辑位于远程机器上的文件,也许我们会想到下面的两点:
1 我们要使用一些特殊的语法来告诉Emacs文件的位置.
2 当我们要装入或是保存文件时,我们要使Emacs联接到远程的主机.
要从另一个主机上装入文件,我们要完成下面的两件事:
1 文件所在的主机名.<