如何使用Emacs编辑器在Linux

介绍

Emacs是最早和最通用的文本编辑器之一,可用于基于Linux和UNIX的系统。 它已经存在了很长时间(超过二十年的GNU emacs),并以其强大和丰富的编辑功能而闻名。 Emacs不仅仅是一个文本编辑器; 它可以使用不同的“模式”进行定制和扩展,使其像Java,C或Python等编程语言一样用作集成开发环境(IDE)。

对于那些已经使用无处不在的vi和用户友好的nano,emacs将作为一个有趣的交叉。 它的强大和功能将类似于vi,而其菜单,帮助文件和易于记忆的命令键将与nano相比。

在本文中,我们将了解如何在Linux系统中安装emacs,并将其用于基本文本编辑。 Emacs也可用于像GNOME这样的Linux图形窗口管理器; 但是我们在这里只讨论“基于文本”的版本。

如何安装Emacs

您可以通过运行以下命令检查您的Linux系统是否安装了emac:

emacs

如果程序已安装,编辑器将以默认欢迎消息开始。 在我的CentOS 6.5系统中不是这样:

[root@TestLinux ~]# -bash: emacs: command not found
-bash: -bash:: command not found

所以我运行以下命令来安装emacs软件包:

[root@TestCentOS ~]# yum install emacs

在Ubuntu 12中,我运行以下命令来安装emacs。

root@TestUbuntu:~# apt-get install emacs

在这两种情况下,Linux将从可用的镜像或软件库查询所需的软件包信息,并询问您是否要继续安装。 它还将给您估计所需的磁盘空间。 一旦你说是(使用单个击键“y”),所有emacs包及其依赖将被下载并安装。 该过程就像安装任何其他Linux包:大量的短信将滚动和安装进度将显示。 在它的结尾,emacs将可供您使用。

第一次的味道的Emacs

用户界面

您可以自行启动Emacs或者,发出简单的命令emacs ,或者通过后指定一个文件名。 如果文件不存在,emacs以空的编辑缓冲区开始,并等待您开始输入。 对于磁盘上的现有文件,内容首先复制到内存,然后加载到主编辑窗口。

在下面的屏幕截图中,我自己启动了emacs。 程序在主窗口中显示欢迎消息:

要启动新文件,我已将光标移动到链接“访问新文件”,然后按Enter键。 一则提示出现在屏幕的底部,要求输入文件名。 Find file: ~/

我为我的新文件(myfile.txt)键入一个名称,然后再次按Enter键。 出现一个干净的窗口。 这是新文件,准备好进行文本输入:

让我们暂停一下,看看用户界面的不同部分。 这也是我们熟悉一些基本概念的时候了。

在屏幕的最顶部有一个菜单。 这是一个主要的区别,vi,在那里你看到一个空的屏幕。 这看起来像任何其他应用程序菜单,事实上,许多emacs功能可以从这里访问。

后来,我们将看到我们如何访问它。

菜单之后,有一个大的编辑空间。 这就是所谓的在您键入文本或查看文件的内容主缓冲区

让我们更多地谈谈缓冲区。

当emac编辑磁盘上的现有文件时,首先将该文档的副本加载到内存中,然后显示在主编辑窗口中。 此区域在存储器被称为“ 缓冲 ”。 在处理文档时,您在编辑空间中所做的所有更改都将应用于缓冲区; 磁盘上的原始文件保持不变。 有时,emacs将在后台自动保存,但只有当您手动保存文档时,更改才真正写入磁盘。 这同样适用于新文件:所有更改都在缓冲区上进行,直到您保存为止。

因此,emacs中的主编辑空间是您对缓冲区的视图。

在主缓冲区之后,在屏幕底部附近显示突出显示的文本条。 这就是所谓的状态栏模式行 这显示了什么“模式”emacs目前在其中。状态栏显示:

  • 当前文件的名称

  • 当前光标位置

  • 当前编辑模式(在我们的示例中是文本模式)

  • 文件的状态( - 对于未修改的文件,**对于具有未保存的更改的文件,%%为只读文件)

最后,在屏幕结束的状态栏下方存在一行空格。 在我们的示例中,它显示文本“(新文件)”。 这个区域被称为迷你缓冲器 Emacs是一个命令驱动的工具,迷你缓冲区是您与emacs交互的主要点。 这是emacs提示您输入命令或显示输出的地方。

视窗

基于文本的emacs版本将“windows”与基于GUI的版本完全不同。 与基于GUI的应用程序不同,基于文本的emacs窗口不仅弹出,而且在终端或控制台会话中不能实际执行。 相反,当emac需要启动一个新窗口时,其主缓冲区分为两部分,就像在浏览器中有两个框架一样。 上半部分显示主缓冲区,下半部分显示新内容。 生成新窗口的emacs示例是当您访问其帮助文件或教程。 稍后我们将更多地讨论窗口。

基本命令键

现在我们熟悉了用户界面,可能很容易开始打字和混乱。 在我们这样做之前,让我们再花几分钟时间来处理emacs的命令键。 像Linux中的大多数东西,emacs很大程度上依赖于键盘命令。 幸运的是,这些按键大多是相当标准的,很容易记住。 此外,与vi不同,emacs不必在编辑和命令模式之间切换。 当您使用emacs打开文件时,可以同时开始输入和发出命令。

emacs中的命令函数通常涉及两个或三个键。 最常见的是Ctrl键,然后是Alt键Esc键。 在emacs文献中,Ctrl以短形式显示为“C”。 所以,如果你看到这样CX抄送 ,它的意思是“按Ctrl键和x在一起,然后按下Ctrl和c”。 同样,如果您看到通道T,它的意思是“按Ctrl和h在一起,然后松开两键,然后按下T”。

Alt键Esc键被称为在Emacs术语“ ”键。 在Mac机这是Option键,并在某些键盘它标记为编辑 这就是为什么emacs文档显示这些键为“M”(M为元)。 就像Ctrl键一样,emacs使用多键功能和元键。 所以,如果你看到这样的Mx的符号,它意味着“请按Alt / ESC /选项/编辑键和x在一起”。

回车键显示为RET(以下简称“返回”)和Esc键通常显示为E.

当您尝试从命令或提示中退出时,Esc键通常起作用。 只要继续按下,直到你摆脱麻烦。 取消的操作的另一种方法将挤压CG(Ctrl键+ g)。

保存和退出

对文档进行一些更改或编写一些文本后,您需要保存它。

要保存文件,请按CX铯 (CTRL + X,然后按Ctrl + S)。 迷你缓冲区将显示这样的消息:

Wrote <file_path_and_name>

如果你不希望保存,但退出,使用命令CX抄送 (CTRL + X,然后按Ctrl + C)。 如果有未保存的数据,则迷你缓冲区将显示如下提示:

Save file <file_path_and_name>? (y, n, !, ., q, C-r, d or C-h)

当你按“n”(没有),emacs给你第二次机会改变主意:

Modified buffers exist; exit anyway? (yes or no)

如果你真的确定你不想保存,键入yes(整个字),然后按Enter键。 这将带您返回命令提示符。

交通:导航基础

如果您不知道正确的键,浏览较长的文档或帮助主题可能是一项繁琐的任务。 幸运的是,在emacs中没有太多的这些要记住,他们是相当直观。 这里是一个列表:

To perform this function             | Use these keys
-------------------------------------|---------------------------------
Moving to the next line              | C-n (n for Next)
Moving to the previous line          | C-p (p for Previous)
Moving one character forward         | C-f (f for Forward) 
Moving one character backward        | C-b (b for Backward)
Moving one word forward              | M-f (f for Forward) 
Moving one word backward             | M-b (b for Backward)
Moving to the start of a line        | C-a 
Moving to the end of a line          | C-e (e for End)
Moving to the start of a sentence    | M-a
Moving to the end of a sentence      | M-e (e for End)
Moving one page down                 | C-v (or PgDn)
Moving one page up                   | M-v (or PgUp)
Moving to the beginning of the file  | M-< (Alt + Shift + "<")
Moving to the end of the file        | M-> (Alt + Shift + ">")

如前所述,C代表Ctrl键,M代表元(Alt / Option / Esc / Edit)。

基本编辑功能

我们现在将了解一些基本的编辑功能在emacs。 让我们从选择文本的简单任务开始。

标记文本区域

要标记文本区域(类似于在流行的文字处理器中选择文本),请按照下列步骤操作:

  • 将光标移动到希望选择开始的位置。 您可以使用上述任何方法移动光标。

  • C-空间 (按Ctrl +空格键)或C @设置一个标志。 迷你缓冲区将显示一个状态信息Mark set

  • 将光标移动到希望区域结束的位置。 同样,使用前面描述的任何组合键。

  • 文本将突出显示,直到您的光标现在所在的位置。

  • 如果要“取消标记”突出显示的文本,请按C空格或C - 两次。 迷你缓冲区将显示一条状态消息Mark deactivated

以下是标记文本的示例:

如果你想选择主缓冲区的所有内容(即“全选”),按CX小时

MH将选择当前段落。

剪切,复制和粘贴

一旦您标记了文本区域,就可以复制或剪切文本并将其粘贴到其他位置。

  • 对于复制文本,按下的E w

  • 用于切割的文字,按顺时针

  • 将光标移动到文本需要粘贴的位置。

  • 赛扬 (Y代表“猛拉” -你是在耍从一个位置到另一个文本)。 内容将粘贴在此处。

删除文本

删除,退格和删除键的工作方式,你希望他们的工作方式。

对于删除整个单词,移动光标在一个单词的开头,然后按马里兰州 要删除多个字词,请按住meta键并持续按d。 单词将逐个删除。

对于删除整条生产线,位置,你希望它是,按CK光标。 这将删除文本直到屏幕上的行的结尾。

对于删除一个句子,按马可福音 只是为了让我们知道,emacs认为一句话已经完成,当它看到两个空格后的句号。 这不同于传统出版,其中新句子在完全停止之后的单个空格之后开始。 这就是如何emacs聪明到足以知道,即使一个句子打破了多行。

撤销重做

撤消上一个操作很简单。 CXü。 你可以继续重复这一点,向后倒。 另一个关键的组合是C- /(按Ctrl + /)或C-_(按Ctrl + _)。

对于重做你的最后撤消,按CG,其次是C-_(这是按Ctrl + Shift +下划线)。 另一种做同样事情的方法是再次按Cx Cu(撤消撤消)。

搜索和替换

在emacs中有两个搜索方向:向前和向后。 在向前搜索中,您指定的字将从当前光标位置向前搜索。 对于向后搜索,它是相反的方式。

  • 向前搜索

  • 的向后搜索

迷你缓冲区将显示一个提示符

I-search:

要么

I-search backward:

一旦开始输入,emacs将尝试搜索正在输入的文本,并突出显示它在主缓冲区中找到的任何匹配项。

这里是一个例子。 下一个截图显示我们正在尝试搜索单词“cat”。 注意在主缓冲区中的每个出现是如何突出显示的。

要替换文本,请按照下列步骤操作:

  • M-%(这是ALT + SHIFT +%)。 迷你缓冲区显示提示输入要搜索的文本( Query replace: )。

  • 键入文本,然后按Enter键

  • 迷你缓冲区显示这样的消息( Query replace <search_word> with:

  • 键入替换文本,然后按Enter键。

  • 对于每场比赛的Emacs发现,它会问你是否想作更换( Query replacing <search_word> with <replace_word>: (Ch for help) )。 您可以执行以下任何操作:

  • 按y替换找到的当前匹配项。

  • 按n跳到下一个匹配。

  • 按q退出而不进行任何替换(基本上是转义)。

  • 按 ! 做一个全局替换没有任何提示。 (Emacs会显示这样的消息replaced n occurrences

拼写检查

拼写检查是在Emacs通过ispell的拼写检查完成。 您可以使用ispell检查整个缓冲区或选定区域的拼写。

只是这样我们知道,ispell没有安装在我的测试CentOS 6.5和Ubuntu 12系统,当我安装emacs(这是emacs 23.3.1)。 我不得不单独安装ispell使用以下命令Ubuntu:

root@TestUbuntu:~# apt-get install ispell

而对于CentOS,它是hunspell:

root@TestCentOS:~# yum install hunspell

现在,如果您已经安装了拼写检查,并在您的系统工作,按的Mx(Alt + X)。 迷你缓冲区将等待您的响应。 键入ispell-并按标签:

M-x: ispell-

一个新窗口将在主缓冲区下打开,并显示与ispell相关的不同选项:

In this buffer, type RET to select the completion near point.

Possible completions are:
ispell-buffer                          ispell-change-dictionary
ispell-comments-and-strings            ispell-complete-word
ispell-complete-word-interior-frag     ispell-continue
ispell-kill-ispell                     ispell-message
ispell-minor-mode                      ispell-pdict-save
ispell-region

在mini缓冲区中开始键入“b”,然后再次按Tab键。 Emacs会使用选项ispell的缓冲完成。 按Enter键,emacs将开始对整个文档进行拼写检查。

以下两个屏幕截图来自Ubuntu系统。 我们有流行的童谣写在emacs与这里和那里的几个拼写错误。 一旦ispell被调用,注意emacs如何建议正确的拼写,并提示你选择正确的单词。 当您输入与建议对应的数字时,会发生替换,ispell会移动到下一个拼写错误的单词。

一旦拼写检查完成,迷你缓冲区将显示如下信息:

Spell-checking <file_name> using ispell with american dictionary...done

左,右和中心对准

对于定心一条线,移动光标在该行并按莫女士 (ALT-O,然后按住Alt键S)的开始。

要调整选定的文本区域,请按照下列步骤操作:

  • 创建文本区域以突出显示您要对齐的文本

  • 出版社的Mx。 迷你缓冲区将等待响应

  • 开始键入设置justifiction-,然后按Tab。

  • 您将获得完成选项,如set-justification-center, set-justification-leftset-justification-rightset-justification-noneset-justification-full

  • 完成对齐命令(例如set-justification-right),然后按Enter键。

  • 所选文本将对齐。

在以下图像的第一部分中,已选择原始文本(以蓝色突出显示)。 然后,我们使用了一套对齐命令右,左,中心对齐文本。

转换案例

这里有一些用于转换案例的命令键。

To perform this function                 | Use these keys
-----------------------------------      |----------------------------
Capitalizing a word after the cursor     | M-c (c for Capitalize)
Converting a word to lower case          | M-l (l for Lower case)
Converting a word to upper case          | M-u (u for Upper case) 
Converting a paragraph to upper case     | Block select, then C-x C-u
Converting a paragraph to lower case     | Block select, then C-x C-l  

访问菜单

当emacs启动时,它通常占用整个屏幕。 其大多数功能也可以从位于屏幕顶部的菜单栏访问。

与基于GUI的程序不同,基于文本的emacs菜单不能通过鼠标拉下来。 事实上,你甚至不能用快捷键突出显示和滚动菜单。

要访问菜单,你将不得不按F10键。 这将打开主缓冲区下的另一个窗口,并显示用于访问菜单项的键列表。 迷你缓冲区将显示一个提示,要求您输入所需的密钥。 一旦按下该键,新窗口的内容将改变,反映下一级别的选项。 从那里你可以挖得更深更深。

走出菜单(不管你是有多深),只需按Esc键三次(ESC-按两次Esc)。 这通常会关闭菜单窗口,您将回到主缓冲区。

在以下两个屏幕截图中,主菜单窗口已在主缓冲区下打开,并显示编辑菜单选项。 注意迷你缓冲区中的提示。

为了给出emacs的力量的想法,这里有一些额外的从它的工具菜单:

  • 日历

  • 简单的计算器

  • 可编程计算器

  • 搜索目录

  • 加密和解密文档

  • 发送和阅读电子邮件

  • 使用grep搜索文件

  • 拼写检查

  • 运行shell命令和编译代码

  • 版本控制

  • 比较和合并文件

访问帮助和教程

Emacs有一个广泛的帮助系统和教程。 访问它是相当简单:你可以使用菜单或使用快捷键。

以下是如何通过菜单找到帮助:

  • F10键。 将在主缓冲区下方打开一个新窗口,显示主菜单选项。

  • h(帮忙)。 窗口的内容将变成这样:

Press PageUp key to reach this buffer from the minibuffer.
Alternatively, you can use Up/Down keys (or your History keys) to change
the item in the minibuffer, and press RET when you are done, or press the
marked letters to pick up your choice.  Type C-g or ESC ESC ESC to cancel.
In this buffer, type RET to select the completion near point.

Possible completions are:
e==>Emacs Tutorial                     E==>Emacs Tutorial (choose language)...
f==>Emacs FAQ                          n==>Emacs News
k==>Emacs Known Problems               s==>Send Bug Report...
p==>Emacs Psychotherapist              S==>Search Documentation
d==>Describe                           r==>Read the Emacs Manual
m==>More Manuals                       F==>Find Emacs Packages
P==>External Packages                  g==>Getting New Versions
c==>Copying Conditions                 0==>(Non)Warranty
a==>About Emacs                        A==>About GNU

从这里,选择适当的选项。

或者,如果您喜欢快捷键,以下是一个快速列表:

  • 要访问emacs的教程,按CHŤ

  • 要阅读Emacs手册,按ch R上

管理Windows

在emacs中需要知道的事情之一是如何管理窗口。 举个例子:你正在编写一个文档,需要访问emacs教程。 你按CH T和教程在其主缓冲区满窗口启动。 如何返回到您的文档? Esc不会工作,Cg也不会工作。

CX b,来摆脱当前缓冲区(在这种情况下,它的教程)。 这是交换机buffer命令。 Emacs将提示您输入缓冲区名称。 您可以开始键入缓冲区名称(本例中的文档名称),然后按Tab键。 就像在主shell中的命令完成一样,emacs将完成其余的。 按Enter键,您将返回到文档中。

这里有一个例子,我刚刚打开教程窗口,想要回到我的主文档myfile.txt。 我已经发出的命令CX b和emacs的提示我有一个缓冲区名。

Emacs commands generally involve the CONTROL key (sometimes labeled
CTRL or CTL) or the META key (sometimes labeled EDIT or ALT).  Rather than
write that in full each time, we'll use the following abbreviations:

 ...
 ...
 ...

-=--:**--F1  TUTORIAL       Top L1     (Fundamental)----------------------------
Switch to buffer (default myfile.txt): my

我在提示符处键入“my”,然后再次按Tab键,emacs为我完成其余的操作。 按Enter键,然后将我带回文档。

一旦我回到文档的主缓冲区,我可以再次按Cx b切换到TUTORIAL缓冲区。 我可以开始键入“TU”,然后按Tab键。 Emacs将完成其余的,按Enter键将带我到教程页面。

用于取得视窗的另一个选择是按CX 0,这通常杀死当前活动窗口。

Emacs模式

其中一个原因的Emacs已经通过在UNIX社会如此广泛是由于其承担不同的工作模式的能力。 在Emacs术语A 模式决定了它是如何根据当前设置的行为。

根据选择的模式,emacs可以用作一个简单的文字处理器来编写文本文件,像我们一直在做的,或者它可以适用于其他高级任务,如编写Python,C或Java代码。 例如,您可以更改emacs的模式以使其与版本控制系统配合使用,运行shell命令或读取手册页。

有两种不同类型的emacs模式。 一个是所谓的主要模式 在主要模式下,emac可以用作编程或脚本语言的集成开发环境。 在这些模式下,程序提供了专门的功能,如颜色语法高亮,缩进和格式化,语言特定菜单选项或与调试器和编译器的自动接口。

为了举个例子,我们将使用emacs在Python中编写一个简单的“Hello World”应用程序。

在shell提示符下,使用我们的Python文件的名称调用emacs:

[root@TestCentOS ~]# emacs hello.py

Emacs是聪明的,知道文件扩展名,将开始在Python模式。 如你在截图中可以看到的,状态行显示模式(Python),主菜单也有一个单独的Python条目。

然后我们为hello world应用程序编写代码。 请注意主缓冲区现在如何显示不同颜色的关键字和注释。

我们现在可以保存文件,退出emacs,更改文件的权限,并从命令提示符运行它。

若要更改的emacs中的主要模式,按MX键。 迷你缓冲区将等待您的响应。 一些主要模式的示例如下:

  • c模式

  • python模式

  • java模式

  • html模式

  • perl模式

  • shell脚本模式

要回到简单的文本编辑,输入文本模式 ,然后按Enter。

相比于主要模式, 次要模式提供特定的功能。 一般来说,这些特征可以与特定的主要模式相关,或者具有系统范围的效果,而与主要模式无关。 此外,与主要模式不同,在任何一个时间都可以有多个次要模式生效。 次要模式也像开关:有些是默认启用的,有些不是。 如果一个次模式已经打开,调用它将关闭它。 如果它关闭,它将被重新打开。

我们之前使用了两种次要模式:一种是使用ispell模式进行拼写检查,另一种是设置对齐。

这里是另一个小模式的例子:

M-x: auto-fill-mode

此模式允许文本行断开,并在其长度超过70个字符时换行到下一行。 它是一个切换开关,这意味着再次调用它将禁用换行。

这里有一些小模式的例子:

  • 友达光电保存模式 :这将触发自动保存该定期保存场景背后的主要缓冲区的内容的财产。

  • 行号模式 :这将触发当前行号的状态栏的显示。

  • 亚麻模式 :切换沿窗口的左边缘的行号的显示。

  • 列数模式 :显示光标在状态栏的当前位置。

  • 覆盖模式 :这就好比用INS键。 打开时,在输入时它将覆盖光标右侧的文本。

  • 菜单栏模式 :这可以开启或关闭的主菜单。

结论

这是一个非常基本的介绍emacs。 我们没有涉及更高级的主题,如编辑emacs配置文件或通过脚本增强其功能。

该程序是用Lisp和C编写的,其原始功能来自于能够在Elisp(Emacs Lisp)中编写代码来定制其默认行为。 使用Elisp,程序员和高级用户可以更改或增强emacs功能,记录宏,创建新的快捷键或构建新的功能。 像任何先进的计算机软件,emacs有一个大的命令集和掌握一切都不容易。 有这么多,它有整个开发人员社区和编程资源在互联网,只专注于emacs命令和how-tos。

但是,我们今天在这里介绍的内容将帮助您开始进行基本编辑,这就是您可能需要的一切。 熟悉基本命令后,您可以转到更高级的主题。

在GNU Emacs的网页有丰富的信息,包括链接,像其他资源的Emacs维基 我强烈建议你访问这个网站

Sadequl Hussain
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏