从菜鸟到专家 vi编辑器全程教学手册(1)


我们曾经在linux vi编辑器概念层层讲解中告诉大家一些基本的操作命令。但是我们在使用vi编辑器的时候还是会遇到不少困惑的地方,尤其是在Linux或UNIX中的基本使用方法,其实这些问题归根结底还是在于我们对相关的知识掌握不牢固。在本文中,您将学习vi编辑器的基本使用方法,希望对您在之后的使用中有所帮助。

使用vi导航文档

使用基本的vi模型

插入、编辑、删除、复制和查找文本

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

先决条件

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

使用vi导航文档

联系 IanIan 是我们最受欢迎并且很多产的作者之一。查看 Ian 的个人资料 并与他和 My developerWorks 上的其他作者和读者联系。几乎所有的 Linux 和 UNIX 系统上都有vi编辑器。事实上,如果系统只有一个编辑器,那它一定就是vi,因此深入了解vi是很值得的。本文将向您介绍一些基本的vi编辑命令,但有关完整的vi教程,请查看我们关于vi的教程 “vi 介绍 —— 快速参考表”,或者咨询人工页面或参考相关书籍。

启动vi

大部分 Linux 发行版现在都带有vim表示viIMproved)编辑器而不是经典的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  

  1. mkdir -p lpi103-8 && cd lpi103-8 && {  
  2. echo 'x="$1"'>count1.sh  
  3. echo 'echo "$2" $(date)'>>count1.sh  
  4. echo 'while [ $x -gt 0 ]; do x=$(( x-1 ));done'>>count1.sh  
  5. echo 'echo "$2" $(date)'>>count1.sh  

要编辑现有文件,可以使用vi命令并将文件名作为参数。参考 参考资料 中的手册了解更多主题的详情。现在,只需要使用不带参数的命令:

vi count1.sh

该命令将打开 count1.sh 文件。您应该看到类似于清单 2 的内容。如果您使用的是vim,一些字或字母可能有颜色。Vim 有一个语法高亮模型它不是原始vi编辑器的一部分),默认情况下,在您的系统中它应该是打开的。

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

  1. x="$1" 
  2. echo "$2" $(date)  
  3. while [ $x -gt 0 ]; do x=$(( x-1 ));done  
  4. echo "$2" $(date)  
  5. ~  
  6. ~  
  7. ~  
  8. ~  
  9. "count1.sh" 4L, 84C 1,1 All 

开发vi编辑器时并非所有终端键盘都有光标移动键,因此您在vi中只能使用标准键盘中能找到的键,以及 Esc 和 Insert 等键。但是,您可以配置vi使用其他键如果可用);键盘上的大部分键在vi中都能做一些很有用的事情。因为这种遗留情况以及早期终端连接较慢的本质,vi 自然有了命令简单和神秘的名声。我们先来查看用于在文件中导航的键。

移动

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

  1. h 在当前行往左移动一个字符   
  2. j 向下移动到下一行   
  3. k 向上移动到上一行   
  4. l 在当前行往右移动一个字符   
  5. w 移动到当前行下一个字   
  6. e 移动到当前行下一个字的结束处   
  7. b 移动到当前行上一个字的开始处   
  8. Ctrl-f 向前滚动一页   
  9. Ctrl-b 向后滚动一页  

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


相关内容