RHCSA 系列:使用 Nano 和 Vim 编辑文本文件 / 使用 grep 和 regexps 分析文本 - 第 4 部分
每个系统管理员都必须处理文本文件作为其日常职责的一部分。 这包括编辑现有文件(最有可能是配置文件)或创建新文件。 有人说,如果你想在 Linux 世界中发动一场圣战,你可以问问系统管理员他们最喜欢的文本编辑器是什么以及为什么。 我们不会在本文中这样做,但将提供一些有助于使用 RHEL 7 中两个最广泛使用的文本编辑器的提示:nano(由于其简单易用,特别是对于新用户)和vi/m(由于其多种功能使其不仅仅是一个简单的编辑器)。 我相信您可以找到更多使用其中一个或其他编辑器的理由,或者也许是其他编辑器,例如emacs或pico。 这完全取决于您。
使用 Nano 编辑器编辑文件
要启动nano,您只需在命令提示符下键入nano ,然后输入文件名(在这种情况下,如果文件存在,它将以编辑模式打开)。 如果文件不存在,或者我们省略文件名,nano 也将以编辑模式打开,但会显示一个空白屏幕供我们开始输入:
如您在上图中所见,nano在屏幕底部显示了可通过指示的快捷键(^,又称插入符号,表示Ctrl键)使用的几个功能。以下列举其中几个:
- Ctrl + G:调出帮助菜单,其中包含完整的功能和说明列表:Ctrl + X:退出当前文件。如果更改尚未保存,则这些更改将被丢弃。
- Ctrl + R:让您通过指定完整路径选择一个文件并将其内容插入到当前文件中。
- Ctrl + O:保存对文件所做的更改。它将允许您使用相同或不同的名称保存文件。然后按 Enter 确认。
- Ctrl + X:退出当前文件。如果更改尚未保存,则这些更改将被丢弃。
- Ctrl + R:让您通过指定完整路径选择一个文件并将其内容插入到当前文件中。
将会把/etc/passwd的内容插入到当前文件中。
- Ctrl + K:剪切当前行。
- Ctrl + U:粘贴。
- Ctrl + C:取消当前操作并返回上一屏幕。
为了轻松浏览打开的文件,nano 提供了以下功能:
- Ctrl + F 和 Ctrl + B分别将光标向前或向后移动,而 Ctrl + P 和 Ctrl + N 分别将光标向上或向下移动一行,就像箭头键一样。
- Ctrl + 空格 和 Alt + 空格每次将光标向前或向后移动一个单词。
最后,
- 如果您想将光标放在文档中的特定位置,请按Ctrl + _(下划线) ,然后输入 X,Y,这样您就可以精确地到达 X 行、Y 列。
上面的例子将带您到当前文档的第 15 行、第 14 列。
如果您还能回忆起早期的 Linux 时代,特别是如果您是从 Windows 转过来的,那么您可能会同意,对于新用户来说,从 nano 开始是最好的选择。
使用 Vim 编辑器编辑文件
Vim是vi的改进版本,vi 是 Linux 中著名的文本编辑器,可在所有符合 POSIX 标准的 *nix 系统(如 RHEL 7)上使用。如果您有机会并且可以安装 vim,那就继续吧;如果没有,本文给出的大多数(如果不是全部)技巧也应该适用。
vim 的显著特点之一是它有多种运行模式:
- 命令模式允许您浏览文件并输入命令,这些命令是一个或多个字母的简短且区分大小写的组合。如果您需要重复其中一个命令一定次数,则可以在其前面加上数字(此规则只有少数例外)。例如,yy(或 Y,yank 的缩写)复制整个当前行,而 4yy(或 4Y)复制整个当前行以及接下来的三行(总共 4 行)。
- 在 ex 模式下,你可以操作文件(包括保存当前文件和运行外部程序或命令)。要进入 ex 模式,我们必须从命令模式开始输入冒号 (:)(换句话说,Esc + :),后面紧跟着要使用的 ex 模式命令的名称。
- 在插入模式中,输入字母 i 即可进入,我们只需输入文本即可。大多数按键都会导致文本出现在屏幕上。
- 我们始终可以通过按 Esc 键进入命令模式(无论我们正在处理哪种模式)。
让我们看看如何执行上一节中为nano概述的相同操作,但现在使用vim。 不要忘记按 Enter 键确认 vim 命令!
要从命令行访问 vim 的完整手册,请在命令模式下输入:help,然后按Enter:
上半部分显示目录索引列表,其中定义了专门针对vim特定主题的部分。要导航到某个部分,请将光标放在该部分上,然后按Ctrl + ](右方括号)。请注意,下半部分显示当前文件。
1.要保存对文件所做的更改,请从命令模式运行以下任一命令即可:
:wq! :x! ZZ (yes, double Z without the colon at the beginning)
2.要退出并放弃更改,请使用:q!。此命令还允许您退出上面描述的帮助菜单,并在命令模式下返回当前文件。
3.剪切N行:在命令模式下输入Ndd 。
4.复制M行:在命令模式下输入Myy 。
5.粘贴之前剪切或复制的行:在命令模式下按P键。
6.将另一个文件的内容插入当前文件:
:r filename
例如,要插入的内容/etc/fstab
,请执行以下操作:
7.将命令的输出插入到当前文档中:
:r! command
例如,要在光标当前位置下面一行插入日期和时间:
在我撰写的另一篇文章(LFCS 系列第 2 部分)中,我更详细地解释了 vim 中可用的键盘快捷键和功能。您可能希望参考该教程以获取有关如何使用这个功能强大的文本编辑器的更多示例。