分类: LINUX
2010-04-08 14:25:34
在本文中,您将学习 vi 编辑器的基本使用方法,这个编辑器在大部分 Linux 或 UNIX 中都可以见到。您将学习:
本文将帮助您准备 Linux Professional Institute's Junior Level Administration (LPIC-1) 考试的 103 主题下的 103.8 考核目标。该考核目标的权值为 3。
为了从本文获得最大的收益,您应该具备基础的 Linux 知识,并且具有一个能够正常运行的 Linux 系统,以便练习本文讨论的命令。不同版本的程序输出的结果的格式可能不同,因此您的结果可能与本文图片和清单所示的结果有所不同。
几乎所有的 Linux 和 UNIX 系统上都有 vi 编辑器。事实上,如果系统只有一个编辑器,那它一定就是 vi,因此深入了解 vi 是很值得的。本文将向您介绍一些基本的 vi 编辑命令,但有关完整的 vi 教程,请查看我们关于 vi 的教程 “vi 介绍 —— 快速参考表”,或者咨询人工页面或参考相关书籍。
大部分 Linux 发行版现在都带有 vim(表示 Vi IMproved)编辑器而不是经典的 vi。Vim 与 vi 是向上兼容的,具有可用的图形模式(gvim)以及标准的 vi 文本模式界面。vi
命令通常是一个 vim 程序的别名或符号链接。有好几个 vim 版本:微型、小型、普通、大型和超大型。您可以使用以下命令找到运行哪个版本,以及该版本包括哪些功能:
vi --version |
回忆之前的文章 “学习 Linux,101:进程执行优先级” 修改优先级中的一节,我们希望更改运行 count1.sh shell 脚本的优先级。您自己测试时可能会发现,命令运行得太快,以至于没有足够的时间使用 renice
更改优先级。那么我们可以使用 vi 编辑器在文件的开始处添加一行,让其休眠 20 秒,以便有时间更改优先级。
如果还没有 count1.sh 程序,在主目录打开终端窗口并从清单 1 中粘贴命令。这将在名为 lpi103-8 的目录中创建一个 count1.sh,并将您带入该目录中。
mkdir -p lpi103-8 && cd lpi103-8 && { echo 'x="$1"'>count1.sh echo 'echo "$2" $(date)'>>count1.sh echo 'while [ $x -gt 0 ]; do x=$(( x-1 ));done'>>count1.sh echo 'echo "$2" $(date)'>>count1.sh } |
要编辑现有文件,可以使用 vi
命令并将文件名作为参数。参考 参考资料 中的手册了解更多主题的详情。现在,只需要使用不带参数的命令:vi count1.sh
该命令将打开 count1.sh 文件。您应该看到类似于清单 2 的内容。如果您使用的是 vim,一些字或字母可能有颜色。Vim 有一个语法高亮模型(它不是原始 vi 编辑器的一部分),默认情况下,在您的系统中它应该是打开的。
x="$1" echo "$2" $(date) while [ $x -gt 0 ]; do x=$(( x-1 ));done echo "$2" $(date) ~ ~ ~ ~ "count1.sh" 4L, 84C 1,1 All |
开发 vi 编辑器时并非所有终端键盘都有光标移动键,因此您在 vi 中只能使用标准键盘中能找到的键,以及 Esc 和 Insert 等键。但是,您可以配置 vi 使用其他键(如果可用);键盘上的大部分键在 vi 中都能做一些很有用的事情。因为这种遗留情况以及早期终端连接较慢的本质,vi 自然有了命令简单和神秘的名声。我们先来查看用于在文件中导航的键。
以下命令可以帮助您在文件内移动:
如果在这些命令之前键入数字,则命令将执行该数字表示的次数。该数字称为重复次数 或者就称为计数。例如,5h 将向左移动 5 个字符。许多 vi 命令都可以使用重复计数。
以下命令将帮助您移动到文件的特定行:
练习这些命令,直到您可以熟悉这些命令在文件内的移动。如果您被卡住,发现事情与预期不同,请继续阅读了解如何离开文件。
关于一个新的编辑器,就有用的一件事情是了解如何在做了不该做的事情前离开编辑器,比如要避免销毁重要的配置文件。您可以在保存或丢弃更改的情况下离开 vi,也可以用重新启动的方式。如果这些命令无效,您可能处于插入模式,这将在后文介绍。如果是这样,可以按 Esc 退出插入模式并返回到命令模式,这些命令就会生效。
注意:
vi 编辑器有两种操作模式:
这两个模式决定了编辑器的行为。您在插入模式中键入的任何内容都将视为将要插入文件的文本。如果尝试键入命令但没有反应,或者在光标下出现字符,那么可能是忘记按 Esc 退出插入模式了。
现在您可以在 vi 中打开文件,在其中移动和退出,现在我们将学习如何编辑文件中的文本。
需要插入、删除或修改文本时,使用以下命令。注意,有些命令有类似于小写形式的大写形式,具体见下文的描述。
可以使用表达式在文件中搜索文本:
上述搜索命令前可以带任何数字表示重复次数。3/x 查找当前点第三次出现 x 的地方,就像是 /x 后跟 2n。类似地,2/^e 将从当前位置开始的第二行查找以 e 开始的内容。
注意,到达文件底部之后,搜索将回到顶部。
vi 中另一个有用的命令是 help 命令,调用它的方式是 :help
。help 将在 vi 中打开;使用 :q
命令可以离开帮助回到工作。如果您希望在某个特定主题获得帮助,比如换行,可以尝试在 :help 命令后面添加一个字,例如::help wrap
。
我们从向 count1.sh 文件添加一行开始。 要保持原来的内容并保存修改的版本,如 count2.sh,使用 vi
打开文件之后,我们应该使用这些 vi 命令。注意,
1G O sleep 20 |
这些命令执行以下操作:
只要知道如何做,一切都很简单。
这是 101 考试 —— 103 主题:GNU 和 UNIX 命令的最新文章。 参见我们的 学习 Linux,101:LPIC-1 路线图 了解本系列,并获得每篇文章的链接。