emacs使用教程,emacs语言
在这里,我们将学习如何在Emacs中插入和删除文本、移动、剪切和粘贴、加载和保存文件。我们还会谈到一些有用的函数,当我们想读取一个新文件时会用到。
插入和删除文本:
在Emacs中插入和删除文本就像在打印机上输入文本一样简单,我们只需输入我们想要的文本。这种输入法和我们在Vim中看到的输入法不一样,因为我们要在Vim中以插入模式输入文本,而在Emacs中不是这样。
在Emacs中,我们可以用几种不同的方法删除文本。最简单的方法是按退格键或Delete键。在大多数Emacs安装中,退格键将删除前一个字符,而delete键将删除最后一个字符。如果这个方法不能删除字符,我们可以使用C-d(delete-char)来删除字符。
输入时自动换行:
当我们在Emacs中输入文本直到一行结束时,Emacs不会替我们换行。而是会表明它会在下一行继续,我们可以在下一行继续输入。这个符号中的继续符号将出现在文章的最后一列。我们可以用下面的方法让Emacs自动换行。我们按下M-x,然后进入凸凹填充模式。
在Emacs中移动:
我们可以通过几种方式进入Emacs。我们可以使用小箭头键在Emacs中移动,也可以通过page-up和page-down在页面之间跳转。
如果我们的小方键不能用,我们也可以用下面的方法来移动它们:
前面一个字符:C-f(前向字符)
向后一个字符:C-b(向后字符)
向上一行:C-p(上一行)
下线:C-n(下一条线)
向前滚动一页:C-v(向上滚动)
向后滚动一页:M-v(向下滚动)
在缓冲区的末尾添加一个新的空行:
当我们到达缓冲区的最后一行时,我们希望Emacs做什么?这里有两种可能的方式:一是加一条线,移动它;第二,铃声提示这是不可能的。我们可以根据个人爱好选择解决方案:
如果我们要选择添加一个新行,我们可以将下面的行添加到我们的。emacs文件:
(setq next-line-add-newlines t)
如果我们想选择响铃,我们可以将下面一行添加到我们的配置文件:
(seq next-line-add-newlines nil)
Emacs为我们提供了许多可以移动的方法。我们不需要一下子知道所有这些方法,但重要的是我们知道它们的存在。我们可以在需要的时候使用它们。
我们可以用C-a(行首)移动到一行的开头,用C-e(行尾)移动到一行的结尾。这些不太好记,但是熟练了就不会觉得难了。
我们也可以以单词为单位向前或向后移动。这比按字符移动要快得多,我们很容易记住这些键:Ctrl right(向前字)向右移动,Ctrl left(向后字)向左移动。
我们也可以使用以下一些键来移动:
前进句:M-e(前进句)
倒装句:M-a(倒装句)
向前段落:M-}(向前段落)
向后段落:M-{(向后段落)
向前一页:C-x](向前一页)
向后翻页:C-x [(向后翻页)
要进一步了解这个函数以及一个句子、段落或页面的结尾描述,我们可以输入C-h f (describe-function),然后输入函数名。
我们还需要两个可以返回到匹配括号中的函数。这种方法分别称为前向sexp和后向sexp。这在编程中更有用。我们可以将它们绑定到元左键和元右键。为此,我们可以在我们的。emacs文件:
(global-set-key[(meta left)] backward-sexp)
(global-set-key[(meta right)] forward-sexp)
有时候我们可以通过指定的数字回到指定的行。这可以通过使用goto-line命令来完成。在XEmacs中,我们可以通过M-g来实现,而在Emacs中,我们希望通过在。emacs文件:
(全局设置键[(meta g)]转到行)
如果我们的窗口很乱或者我们想把光标放在窗口的中央,我们可以按C-l (recenter)。这将重新绘制我们的窗口,并将光标放在窗口的中间,而不改变它在缓冲区中的位置。
剪切、复制和粘贴:
要标记我们想要剪切或复制的区域,我们可以使用鼠标或键盘。
通过下面的例子,我们可以学习如何使用鼠标标记区域,并将其复制到剪切粘贴板上(在Emacs中称为kill-ring):
1将鼠标放在我们要标记的文本的开头。
按下鼠标左键并拖动鼠标,直到我们要复制的文本结束。
3释放鼠标
4如果我们想将这些文本复制到剪贴板,也就是说,不从缓冲区中删除它们,选择编辑菜单并选择复制。如果我们想将这些文本剪切到剪贴板中,也就是说,从缓冲区中删除它们,我们可以从编辑菜单中选择剪切。
当然,如果我们在Emacs中操作,Linux中的复制方法也是适用的。
以下示例可以帮助我们了解如何标记和复制区域文本:
将光标放在我们要选择的文本的开头。
2按Ctrl空格键,文本标记将显示在缓冲区的下部。
到我们要选择的文本的末尾。
四
如果要复制到剪贴板,可以按M-w(kill-ring-save),如果要剪切,可以按C-w(kill-region)。
但是,我们最常见的做法是用鼠标标记文本区域,然后用键盘剪切或复制。虽然这些键盘绑定一开始很难记住,但是我们还是要尝试这样做,因为这样的方法会让我们和Emacs的交互更加方便快捷。
我们可以用鼠标或键盘来粘贴文本。如果我们想使用鼠标,我们只需在想要粘贴文本的地方按鼠标中键。要使用键盘,我们需要将光标放在要粘贴文本的地方,然后按C-Y。
Emacs不仅会保存最后的选择,还会保存一些以前的文本选择。这使得我们将一些旧的选择放入我们的缓冲区。要粘贴一个旧的文本选择,我们可以按C-y,这将粘贴第一个文本选择到缓冲区。然后,我们按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中显示信息来提示我们这是一个新文件。
也许这就是为什么我们要打开一个不存在的文件:
我们需要编辑一个新文件。
我们输入了错误的文件名,也就是说,我们实际上想要编辑另一个文件。
在后一种情况下,我们需要通过命令C-x k(kill-buffer)杀死为新文件打开的缓冲区,然后打开我们想要编辑的文件。更好的办法是,我们可以按C-x C-v(查找-交替-文件),这样会同时完成以上两个步骤。
这里要注意的是,在Emacs中加载或打开一个文件叫做查找文件。这是由于历史原因,所以加载文件的命令是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允许我们编辑位于远程机器上的文件。也许我们会想到以下两点:
我们需要使用一些特殊的语法来告诉Emacs文件的位置。
当我们想要加载或保存文件时,我们需要将Emacs连接到远程主机。
要从另一台主机加载文件,我们必须完成以下两件事:
文件1的主机名。
我们在该主机上的用户名。
然后Emacs会使用FTP连接来下载我们想要编辑的文件。
这里我们应该注意,如果我们想要使用这个特性,我们必须允许FTP连接到远程主机。
要让Emacs加载位于其他主机上的文件,我们可以简单地使用这些我们已经知道的命令在本地打开文件。我们已经知道C-x C-f (find-file)和C-x C-v (find-alternate-file)。作为文件名,我们需要在远程主机上指定我们的用户名,我们可以使用以下语法:
/usr@host:文件名
这条语句的构成是:斜杠、用户名、标记@、主机名、冒号、文件名。
例如,如果我们希望以root用户身份在linux.homenet主机上加载/etc/passwd文件,我们可以输入:
/root @ Linux . homenet:/etc/passwd
如果我们在远程主机上的用户名与我们当前机器上的用户名相同,我们可以省略usrmme @部分。例如,如果我们想编辑。在linux.homenet主机的用户目录下的tcshrc文件中,我们可以这样做:
/linux.homenet:~/。文件
这里要注意的是~代表我们在远程主机上的用户主目录。
当Emacs连接到远程主机时,minibuffer会向我们显示密码。
Emacs还可以编辑压缩文件或文档,即带有。gz,z,焦油,zip,电弧,lzh,动物园文件扩展名。这可以避免当我们的磁盘空间相对较低时解压缩文件。
一个名为jka-compr的库可以在Emacs中增加编辑压缩文件的功能,可以透明读写gzip或compress压缩的文件。这里的透明性意味着我们实际上不会注意到这是一个压缩文件。
Emacs识别的压缩文件必须是扩展名为。gz,z和。tgz。带有最后一个扩展名的文件是用tar归档并用gzip压缩的文件。
当我们加载一个压缩文件时,Emacs在向我们显示它之前简单地解压缩文件。当我们保存文件时,它会在写入硬盘时对文件进行压缩。所以对我们来说是透明的。为了添加这个特性,我们将在我们的。emacs文件:
(需要“jka-compr”)
(jka-压缩机-安装)
如果我们不用XEmacs,那就不用加第二行了。
当我们加载一个归档文件时,Emacs会向我们显示归档文件中的文件列表。Tar存档文件由名为tar-mode的库处理,而zip、arc、LZF和动物园存档文件由名为arc-mode的库处理。这意味着两个归档文件的设置界面有些不同。
当光标在一个文件上时,我们按回车键,文件将被加载到缓冲区中,然后我们就可以编辑文件了。当我们保存时,存档文件将自动更新。
然而,对于tar归档文件来说,这并不完全正确。为了更新tar文件,我们需要保存包含tar归档文件的缓冲区。
菜单中有许多不同的功能可以处理这些存档文件:我们从这个存档文件中复制文件或将文件复制到这个存档文件中,重命名文件或更改文件的权限,等等。
文档模板:
emacs的一个主要哲学是,我们应该把时间花在有意义的地方,而不是琐碎的任务上(Emacs的一个主要哲学是,你应该把时间花在成为天才上,而不是做琐碎的任务上!).如果我们在使用Emacs的时候能够牢记这一点,我们就会发现,我们要做的事情,用Emacs少敲键盘或者根本不用敲键盘就能完成。
这方面的一个例子是创建一个新文件。在大多数情况下,当我们创建一个新文件时,最初的几分钟将用于插入上次创建类似文件时插入的文本,例如,上次创建HTML文档时插入的文本。
这个问题的一个解决方案是让Emacs插入一个模板。这个模板会根据我们是写C程序、HTML文档还是给奶奶写信而有所不同。再者,HTML文件的设置模板不同于其他文件模板。我们个人主页的HTML文件可能与我们为公司设计的文件不同。或者一个程序的模板可能与另一个不同。
当我们创建一个新文件时,Emacs会根据文件扩展名寻找相应的模板。也就是说,当我们创建一个名为test.html的文件时,Emacs会寻找一个名为TEMPLATE.html.tpl的模板。
当查找模板时,Emacs将首先在新文件所在的目录中查找。如果没有找到Emacs,Emacs将在名为Templates的子目录中查找。如果仍然没有找到,Emacs将在父目录和名为Templates的子目录中查找。Emacs将以这种方式查找用户主目录的顶部。如果Emacs还是找不到,Emacs会在我们可能已经订购了模板的地方查找。
例如,如果我们创建了一个名为~/work/Emacs-project/note.txt的文件,并且我们的所有标准模板都位于目录~/lib/template中。Emacs将通过以下方式进行查找:
1.~/work/Emacs-project/template . txt . TPL
2.~/work/Emacs-project/Templates/template . txt . TPL
3.~/work/TEMPLATE.txt.tpl
4.~/work/Templates/template . txt . TPL
5.~/TEMPLATE.txt.tpl
6.~/Templates/TEMPLATE.txt.tpl
7.~/lib/templates/template . txt . TPL
我们可能会对这种搜索方式感到惊讶,但这种方式非常重要,原因如下:
1.通过在当前目录和模板子目录中搜索,我们有时会将模板隐藏在子目录中,因为我们不希望这些模板与其他文件混合在一起。换句话说,我们不必这样做。
通过搜索这个路径,我们可能会在子目录或更高级别的目录中找到特殊的模板。例如,我们可能有一个名为Letters的目录,其中存储了我们所有的信件。在这个目录下,我们可能会放一个通用的模板,里面会插入一些像亲爱的这样的词.和当前日期。在信件子目录中,我们可能会存储一些写给男朋友或女朋友的信件。这个模板会插入一些。
最后,通过在标准模板目录中搜索,我们将找到所有的通用模板。
模板可以包含一些由标准行(替身)组成的文本。基于此模板创建新文件时,这些行可能会被其他文本替换或在缓冲区中被标记。标准行的格式是(letter),比如P在我们新建一个文档的时候在缓冲区里设置这个点,A可以插入到我们的邮箱里。
以下是一些不需要用户定义的代码:
示例描述
以及文件和目录类:
(DIR)~/字母/文件名的部分目录
(FILE) Gretchen.txt没有目录的文件名。
(RILE_RAW)不带扩展名的Gretchen的文件名
(eile _ ext)txt文件名的扩展名(不带逗号)
日期类别:
(日期)1999年1月7日
20:17:29日期和时间
(ISO_DATE) 1999-01-07 ISO 8601日期
系统信息类别:
(作者)blackie@ifad.dk完整邮箱
(登录名)小黑登录名
(主机地址)ifad.dk主机名
(USER_NAMEE) Jesper用户的真实姓名
类别:
(点)这个设定点,当然只能设定这个点。
(MARKT)设置标记,只能设置标记。
( 1 ) ( 9 )
十个可能的位置。要到达这些位置,我们可以按C-x j(跳转到注册)
模板示例如下:
欧登塞(一)
亲爱的
我们的记录号:(1)
干杯(U)
在我们的模板中,我们还可以插入问题的答案。所以在我们之前的例子中,我们可能希望提示我们在Dear后面插入姓名。例如,以下模板:
欧登塞(一)
亲爱的(姓名)
(P)
我们的记录编号: (编号)
干杯(U)
模板-定义-部分
(“姓名”“客户的姓名是什么?”)
(‘数字’‘记录数字是多少?’)
为了让Emacs向我们提问,我们需要插入一行来表示定义部分的开始。这一行后面的文字是用来定义问题的,所以要注意不要插入没有语法的文字。
每个问题都与一个单词相关联。这个单词被用作标准输入文本。
这样,当我们打开一个新文件时,Emacs会向我们提问,我们的回答会被插入到相应的地方。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。