`
netcome
  • 浏览: 482726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习 Linux,101: 使用 vi 编辑文件

阅读更多

 

概述

在本文中,您将学习 vi 编辑器的基本使用方法,这个编辑器在大部分 Linux 或 UNIX 中都可以见到。您将学习:

  • 使用 vi 导航文档
  • 使用基本的 vi 模型
  • 插入、编辑、删除、复制和查找文本

本文将帮助您准备 Linux Professional Institute's Junior Level Administration (LPIC-1) 考试的 103 主题下的 103.8 考核目标。该考核目标的权值为 3。

先决条件

为了从本文获得最大的收益,您应该具备基础的 Linux 知识,并且具有一个能够正常运行的 Linux 系统,以便练习本文讨论的命令。不同版本的程序输出的结果的格式可能不同,因此您的结果可能与本文图片和清单所示的结果有所不同。

使用 vi 导航文档



几乎所有的 Linux 和 UNIX 系统上都有 vi 编辑器。事实上,如果系统只有一个编辑器,那它一定就是 vi,因此深入了解 vi 是很值得的。本文将向您介绍一些基本的 vi 编辑命令,但有关完整的 vi 教程,请查看我们关于 vi 的教程 “vi 介绍 —— 快速参考表”,或者咨询人工页面或参考相关书籍。

启动 vi

大部分 Linux 发行版现在都带有 vim(表示 VIMproved)编辑器而不是经典的 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,并将您带入该目录中。


清单 1. CPU 密集型脚本 - 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 编辑器的一部分),默认情况下,在您的系统中它应该是打开的。


清单 2. 使用 vi 编辑 count1.sh

				
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 自然有了命令简单和神秘的名声。我们先来查看用于在文件中导航的键。

移动

以下命令可以帮助您在文件内移动:

h
在当前行往左移动一个字符
j
向下移动到下一行
k
向上移动到上一行
l
在当前行往右移动一个字符
w
移动到当前行下一个字
e
移动到当前行下一个字的结束处
b
移动到当前行上一个字的开始处
Ctrl-f
向前滚动一页
Ctrl-b
向后滚动一页

如果在这些命令之前键入数字,则命令将执行该数字表示的次数。该数字称为重复次数 或者就称为计数。例如,5h 将向左移动 5 个字符。许多 vi 命令都可以使用重复计数。

移动到行

以下命令将帮助您移动到文件的特定行:

G
移动到文件的特定行。例如,3G 移动到第 3 行。如果没有参数,G 将移动到文件的最后一行。
H
相对于屏幕移动到最上面的行。例如,3H 将移动到屏幕上方往下第三行。
L
就像 H 一样,不同之处在于移动到屏幕的最后一行。因此,2L 移动到屏幕的倒数第二行。

练习这些命令,直到您可以熟悉这些命令在文件内的移动。如果您被卡住,发现事情与预期不同,请继续阅读了解如何离开文件。

离开 vi

关于一个新的编辑器,就有用的一件事情是了解如何在做了不该做的事情前离开编辑器,比如要避免销毁重要的配置文件。您可以在保存或丢弃更改的情况下离开 vi,也可以用重新启动的方式。如果这些命令无效,您可能处于插入模式,这将在后文介绍。如果是这样,可以按 Esc 退出插入模式并返回到命令模式,这些命令就会生效。

:q!
退出编辑文件并放弃所有更改。这是避免麻烦的常用手段。
:w!
写入文件(无论是否修改)。尝试重写现有文件或只读文件,或者其他不可写文件。您可以给定一个文件名作为参数,写入的将是这个文件而不是开始的文件。忽略 ! 通常会更加安全,除非您知道您在做什么。
ZZ
如果修改了文件,则写入文件。是普通 vi 退出常用的方法。
:e!
编辑文件的当前磁盘副本。这将重载文件,放弃所做的更改。如果磁盘副本出于某些原因发生了更改,并且您需要最新的版本,那么可以使用这种方法。
:!
运行一个 shell 命令。键入命令并按 Enter。当命令完成时,您将看到输出和提示返回到 vi 编辑。

注意:

  1. 当您键入冒号 (:) 时,您的光标将移动到键入命令和任何参数的屏幕的下一行。
  2. 如果忽略上述命令的感叹号,您将收到一条错误消息,比如更改没有保存,输出文件无法重写(例如,编辑只读文件时)。
  3. : 命令有一个较长的形式(:quit, :write, :edit),但是很少使用。

vi 模式

vi 编辑器有两种操作模式:

命令模式
在命令模式中,您可以在文件中移动并执行一些编辑操作,比如搜索文本、删除文本等。启动时通常都是命令模式。
插入模式
在插入模式中,您在插入点向文本键入新文本。要返回到命令模式,按 Esc(Escape)键。

这两个模式决定了编辑器的行为。您在插入模式中键入的任何内容都将视为将要插入文件的文本。如果尝试键入命令但没有反应,或者在光标下出现字符,那么可能是忘记按 Esc 退出插入模式了。

编辑文本

现在您可以在 vi 中打开文件,在其中移动和退出,现在我们将学习如何编辑文件中的文本。

修改文本

需要插入、删除或修改文本时,使用以下命令。注意,有些命令有类似于小写形式的大写形式,具体见下文的描述。

i
在当前位置的字符之前进入插入模式。键入文本并按 Esc 返回命令模式。使用 I 在当前行的前面插入。
a
在当前位置的字符之后插入模型。键入文本并按 Esc 返回到命令模式。使用 A 插入当前行的结尾。
c
使用 c 更改当前字符并进入插入模式键入替换字符。
o
在当前行下方另起一行以插入文本。使用 0 打开当前行上面的一行。
cw
删除当前字的其余部分,进入插入模式进行替换。使用重复计数替换多个字。使用 c$ 替换行的末尾。
dw
与上述 cw(和 c$)类似,但不进入插入模式。
dd
删除当前行。使用重复计数删除多行。
x
删除光标位置的字符。使用重复计数删除多个字符。
p
将最后一个删除文本放在当前字符。使用 P 将其放在当前字符之前。
xp
组合 x 和 p 是一个常用的方法。这将交换光标位置的字符和它右边的字符。

搜索文本

可以使用表达式在文件中搜索文本:

/
使用 / 后跟正则表达式可以在文件中进行向前搜索。
?
使用 ? 后跟正则表达式可以在文件中进行向后搜索。
n
使用 n 以任意方向重复上一次搜索。

上述搜索命令前可以带任何数字表示重复次数。3/x 查找当前点第三次出现 x 的地方,就像是 /x 后跟 2n。类似地,2/^e 将从当前位置开始的第二行查找以 e 开始的内容。

注意,到达文件底部之后,搜索将回到顶部。

获得帮助

vi 中另一个有用的命令是 help 命令,调用它的方式是 :help。help 将在 vi 中打开;使用 :q 命令可以离开帮助回到工作。如果您希望在某个特定主题获得帮助,比如换行,可以尝试在 :help 命令后面添加一个字,例如::help wrap

小结

我们从向 count1.sh 文件添加一行开始。 要保持原来的内容并保存修改的版本,如 count2.sh,使用 vi 打开文件之后,我们应该使用这些 vi 命令。注意, <Esc> 表示按 Esc 键。


清单 3. 向 count1.sh 添加一行的编辑器命令

				
1G
O
sleep 20<Esc> 
:w! count2.sh 
:q

 

这些命令执行以下操作:

1G
移动到文件的第一行
O
在上方新建一行并进入插入模式
sleep 20
要添加的新文本
<Esc>
按 Esc 键返回命令模式
:w! count2.sh
将文件写入磁盘
:q
关闭 vi

只要知道如何做,一切都很简单。

这是 101 考试 —— 103 主题:GNU 和 UNIX 命令的最新文章。 参见我们的 学习 Linux,101:LPIC-1 路线图 了解本系列,并获得每篇文章的链接。

 

参考资料

学习


来源:developerWorks

 

分享到:
评论

相关推荐

    Linux应用技术:Linux常用命令与VI文件编辑器.docx

    - 将test文件中第1行的内容以追加方式添加到myfile.txt文件末尾:使用vi编辑器复制第一行内容并粘贴到目标文件末尾。 - 显示出test文件中所有行的行号:`cat -n /home/test` **11. 字符串替换** - 在vi编辑器中...

    Linux应用技术:Linux的vi编辑器.pptx

    项目3 Linux磁盘文件管理 第三讲 主要内容 Linux操作命令 Linux目录管理 Linux文件管理 拓展:管道和重定向 Linux文件系统 系统及其他命令 vi编辑器 磁盘分区管理 vi编辑器 功能: vi(vim)最常用、功能最强大的全...

    linux实验报告vi编辑器的使用.pdf

    学习使用Vi编辑器建立、编辑、显示及加工处理文本,并了解Vi编辑器在Linux系统中的重要性。 二、实验内容 1. 进入和退出Vi 2. 利用文本插入方式建立一个文件 3. 在新建的文本文件上移动光标位置 4. 对文件执行删除...

    Linux系统基本操作命令与vi编辑器使用

    Linux系统基本操作命令与vi编辑器使用 Linux系统是一个开源的操作系统,广泛应用于服务器、嵌入式系统和个人电脑等领域。作为一个专业的IT从业者,掌握Linux系统的基本操作命令和vi编辑器使用是非常必要的。本文将...

    实验三:Linux VI编辑器.doc

    #### 一、Linux VI编辑器简介 **VI编辑器**是Linux系统中最常用的文本编辑工具之一,适用于所有类型的文本文件编辑。它具有强大的功能和灵活的操作方式,深受用户喜爱。 ##### 1. 启动VI编辑器 - 直接在命令行...

    Linux实习三报告 VI编辑器及shell命令

    2. **编辑与保存**:使用VI编辑文本文件,然后用`wq`保存并退出,使用`cat`命令验证内容。 3. **编写C程序**:在VI中编写C代码,如“Hello World!”程序,然后用`g++`编译并执行。如果遇到错误,比如由于文件扩展名...

    Linux用VI编辑后保存

    ### Linux下使用VI编辑器进行文件编辑与保存的方法 #### 引言 在Linux系统中,VI(Visual Editor)编辑器是一种非常强大的文本编辑工具,它不仅功能全面而且使用广泛。对于初学者而言,掌握如何在Linux环境中使用...

    文本编辑器vi 使用

    vi编辑器有三种主要操作模式:命令模式、插入模式和底行模式。 1. **命令模式**:在这个模式下,你可以移动光标、删除文本、复制和粘贴等。按下`i`、`a`、`o`等键可以进入插入模式。 2. **插入模式**:在插入模式下...

    学习使用vi编辑器

    在 Linux 操作系统中,vi 编辑器是一个功能强大且广泛使用的文本编辑器。学习使用 vi 编辑器可以提高用户的工作效率和编程能力。下面是学习使用 vi 编辑器的一些知识点: 实验目的 * 练习 vi 编辑器的使用 * 掌握 ...

    Linux实验六vi文本编辑器[整理].pdf

    * 练习三:使用 VI 文本编辑器来编辑刚才创建的两个文件 t1 和 t2,并进行一些高级操作,例如复制、删除、撤销和恢复等。 VI 文本编辑器是一个功能强大且灵活的文本编辑器,广泛应用于 Linux 操作系统中。通过了解 ...

    LINUX原理及应用:第8章 使用vi编辑文件.ppt

    【Linux原理及应用:第8章 使用vi编辑文件】 在Linux操作系统中,vi编辑器是不可或缺的工具,尤其对于系统管理员和程序员来说更是如此。vi全称来自"visual",是一个全屏幕编辑器,它的功能强大,但也因其复杂的操作...

    linux所有命令+vi编辑器+文件编辑器

    本资料包聚焦于Linux中的三个核心要素:所有命令、vi编辑器以及文件编辑器的使用。以下是对这些主题的详细阐述: 一、Linux所有命令 Linux命令行提供了丰富的指令集,用于执行各种任务,如文件管理、系统控制、网络...

    linux操作系统实验vi编辑器的使用.pdf

    ### Linux操作系统实验vi编辑器的使用 #### 实验目的 本次实验旨在使学习者能够熟练地运用Linux系统中的vi编辑器进行文本编辑工作。通过实际操作掌握以下技能: 1. **掌握Linux系统的vi编辑器的基本操作**:了解vi...

    Linux文件系统管理命令及Vi编辑器的应用

    【Linux 文件系统管理命令】 在Linux操作系统中,文件系统管理是日常运维的重要组成...通过这些命令和操作,用户可以高效地管理和编辑Linux系统中的文件与目录,同时掌握vi编辑器的基本使用技巧,提升Linux运维能力。

    Linux下vi编辑器的使用

    Linux下的vi编辑器是一款强大的文本编辑工具,它具备丰富的文本操作功能,允许用户根据个人需求进行定制。vi编辑器的特点在于它不包含图形界面菜单,而是通过命令模式进行操作,分为命令模式、插入模式和末行模式三...

    linux下Vi编辑器命令大全

    Vi编辑器是Unix及类Unix操作系统(包括Linux)中广泛使用的文本编辑工具。Vi编辑器具备强大的功能和丰富的命令集,适用于从简单的文本编辑到复杂的脚本编写等多种场景。本文旨在详细介绍Vi编辑器的基本操作、光标...

    Linux的基本命令操作及vi的使用

    5. **学习使用vi编辑器建立、编辑、显示以及加工处理文本文件**:掌握vi编辑器的基本操作,能够高效地创建和修改文本文件。 #### 二、实验内容及要求详解 ##### 1. 登陆Linux服务器 - **登录步骤**:通过telnet...

    vi编辑器使用技巧总结

    Vi 编辑器使用技巧总结 Vi 编辑器是 Unix 系统下的标准编辑器,几乎每个 Unix 或类 Unix 操作系统都提供了 Vi 的编辑功能。Vi 的强大功能使其成为服务器管理和开发人员的必备工具之一。本文总结了 Vi 编辑器的常用...

    vi编辑器使用文档.doc

    1. 打开文件:vi 编辑器可以使用 `vi` 命令打开文件,例如 `vi test.txt` 打开名为 test.txt 的文件。 2. 进入编辑模式:在 vi 编辑器中,按下 `i` 键可以进入编辑模式,这时可以输入文本内容。 3. 退出并保存:在 ...

Global site tag (gtag.js) - Google Analytics