linux 中 Vi 以及 Vim 的使用

时间:2022-05-18 09:15:12

原文参考鸟哥私房菜

linux 中 Vi 以及 Vim 的使用

Vim 程序编辑器

`系统管理员癿重要工作就是得要修改不设定某些重要软件的配置文件,因此至少得要学会一种以上的文字接口的文书编辑器。 在所有的 Linux distributions 上头都会有的一套文书编辑器就是 vi ,而且很多软件默认也是使用 vi 做为他们编辑的接口, 因此鸟哥建议您务必要学会使用 vi 这个正是文书编辑器。此外,vim 是高级版的 vi , vim 不但可以用不同颜色显示文字内容,还能够进行诸如 shell script, C program 等程序编辑功能,你可以将 vim 规为一种程序编辑器!鸟哥也是用 vim 编辑鸟站的网页文章呢! ^_^`

1. Vi 与 Vim

    由前面一路走来,我们一直建议使用文本模式来处理 Linux 的系统设定问题,因为不但可以让你比较容易了解到 Linux 的运作状况,也比较容易了解整个设定的基本精神,更能保证你的修改可以顺利的被运作。 所以,在 Linux 癿系统中使用文本编辑器来编辑你的 Linux 参数配置文件,可是一件很重要的事情呦!也因此呢,系统管理员至少应该要熟悉一种字处理器的!
Tips: 这里要再次的强调,不同的 Linux distribution 各有其不同的附加软件,例如 Red Hat Enterprise Linux 与 Fedora 的 ntsysv 与 setup 等,而 SuSE 则有 YAST 管理工具等等, 因此,如果你只会使用此种类型的软件来控制你的 Linux 系统时,当接管不同的 Linux distributions 时,呵呵!那可就苦恼了!`

在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了!与微软的 Windows 系统的同的是,如果你用惯了 Microsoft Word 或 Corel Wordperfect 的话,那么除了 X window 里面的图形接口编辑程序(如 xemacs )用起来尚可应付外,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观不方便。
Tips: 什么是纯文本档?其实档案记录的就是 01 ,而我们透过编码系统来将这些 01 转成我们认识的文字就是了。在第零章里面癿数据表示方式有较多说明,请自行查阅。ASCII 就是其中一种广为使用的文字编码系统,在 ASCII 系统中的图标与代码可以参考` http://zh.wikipedia.org/wiki/ASCII
那么 Linux 在文字接口下的文书编辑器有哪些呢?其实有非常多喔!常常遇到的就有: emacs, pico, nano, joe, 与 vim 等等。既然有这么多文字接口的文书编辑器,那么我们为什么一定要学 vi 啊?还有那个 vim 是做啥用的?下面就来谈一谈先!

`


1.1为何要学vim

文书编辑器那么多,我们之前在第五章也曾经介绍过那简单好用的 nano ,既然已经学会了 nano ,干嘛鸟哥还一直要你学这不是很友善的 vi 呢?其实是有原因的啦!因为:
  • 所有的Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在;
  • 很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到癿的crontab, visudo, edquota 等指令);
  • vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
  • 因为程序简单,编辑速度相当快速。
其实重点是上述的第二点,因为有太多 Linux 上面的指令都默认使用 vi 作为数据编辑的接口,所以你必须、一定要学会 vi ,否则很多指令你根本就无法操作呢!这样说,有刺激到你务必要学会 vi 的热情了吗? ^_^
那么什么是 vim 呢?其实你可以将 vim 视作 vi 的高阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。举例来说,当你使用 vim 去编辑一个 C 程序语言的文件,或者是我们后续会谈到的 shell script 程序时,vim 会依据文件的扩展名或者是文件内的开头信息判断该文件的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息。也就是说,这个 vim 是个“程序编辑器”啦!甚至一些 Linux 基础配置文件内的语法,都能够用 vim 来检查呢!例如我们在第八章谈到的 /etc/fstab 这个档案的内容。
简单的来说,vi 是老式的文字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的一项很好用的工具,就连 vim 的官方网站` http://www.vim.org `自己也说 vim 是一个"程序开发工具"而不是文字处理软件~^_^。 因为 vim 里面加入了很多额外的功能,例如支持正则表示法的查找架构、多文件编辑、块复制等等。这对于我们在 Linux 上面进行一些配置文件的修订工作时,是很棒的一项功能呢!
下面鸟哥会先就简单的 vi 做个介绍,然后再跟大家报告一下 vim 的额外功能不用法呢!

1.2 vi 的使用

基本上 vi 共分为三种模式,分别是一般模式、编辑模式与命令行模式。 这三种模式的作用分别是:

  • 一般模式
    以 vi 打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容,也可以使用复制、粘贴来处理你的文件数据。
  • 编辑模式
 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的!要等到你按下“i, I, o, O, a, A, r, R”等任何一个字母后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现INSERT 或 REPLACE 的字样,此时才可以行编辑。而如果要回到一般模式时,则必须要按下Esc这个按键即可退出编辑模式。
  • 命令行模式
 在一般模式当中,输入" : / ? "三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以提供你查找数据癿操作,而读取、存盘、大量替换字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

简单的说,我们可以将这三个模式想成底下的图标来表示:

linux 中 Vi 以及 Vim 的使用

注意到上面的图标,你会发现一般模式可不编辑模式及命令模式切换,但编辑模式与命令模式之间不可互相切换喔!这非常重要啦!闲话不多说,我们底下以一个简单的例子来进行说明吧!


1.2.1简单执行范例

如果你想要使用 vi 来建立一个名为 test.txt 的档案时,你可以这样做:
- 使用 vi 迚入一般模式
[root@www~]# vi test.txt

  • 直接输入” vi 文件名”就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该档名存在与否! 整个画面主要分为两部份,上半部与最下面一行两者可以视为独立的。如下图 1-2 所示,图中那个虚线是不存在的,鸟哥用来说明而已啦!上半部显示的是档案的实际内容,最下面一行则是状态显示列(如下图的[New File]信息),或者是命令执行行!

linux 中 Vi 以及 Vim 的使用

  • 如果你打开的文件是旧文件(已经存在的文件),则可能会出现如下的信息:

linux 中 Vi 以及 Vim 的使用

  • 如上图 所示,箭头所指的那个”/etc/man.config” 141L, 4617C”代表的是文件名为 /etc/man.conf, 文件内有 141 行 以及具有 4617 个字符的意思! 那一行的内容并不是在文件内,而是 vi 显示一些信息的地方喔!此时是在一般模式的环境下啦。 接下来开始来输入吧!

2.按下i进入编辑模式,开始编辑文字

在一般模式之中,只要按下 i, o, a 等字符就可以进入编辑模式了!在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示啰!这个时候,键盘上除了 [Esc] 这个按键外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑啰!如下图所示

linux 中 Vi 以及 Vim 的使用

Tips: 在 vi 里面,[tab] 这个按钮所得到的结果不空格符所得到的结果是不一样的,特别强调一下!

3.按下 [ESC] 按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 [Esc] 这个按钮即可!马上你就会出现画面左下角的 – INSERT – 不见了!

4.在一般模式中按下 :wq 储存后离开 vi

OK,我们要存档了,存盘并离开的指令很简单,输入『:wq』即可存档离开!(注意了,按下 : 该光标就会移动到最底下一行去!) 这时你在提示字符后面输入"ls -l"即可看到我们刚刚建立的 test.txt 档案啦!整个图示有点像底下这样:

linux 中 Vi 以及 Vim 的使用

如此一来,你的文件 test.txt 就已经建立起来啰!需要注意的是,如果你的文件权限不对,例如为 -r--r--r-- 时,那么可能会无法写入,此时可以使用"强制写入"的方式吗?可以!使用" :wq! " 多加一个惊叹号即可!不过,需要特别注意呦!那个是在"你的权限可以改变"的情况下才能成立的!关于权限的概念,请自行回去翻一下鸟哥第六章的内容吧!

1.2.2按键说明

除了上面简易范例的 i, [Esc], :wq 外,其实 vim 还有非常多的按键可以使用喔!在介绍之前还是要再次强调, vim 癿三种模式只有一般模式可以不编辑、命令行模式切换,编辑模式与命令行模式之间并不能切换的!底下就来谈谈 vim 软件中会用到的按键功能吧!
具体参考(http://www.cncentos.com/forum.php?mod=viewthread&tid=601)

  • 特别注意,在 vi 中,数字是很有意义的!数字通常代表重复做几次的意思!也有可能是代表去到第几个什么什么的意思。举例来说,要删除 50 行,则是用 “50dd” 对吧! 数字加在动作之前,那我要向下移动 20 行呢?那就是“20j”或者是”20↓”即可。

  • OK!会这些指令就已经很厉害了,因为常用到的指令也只有不到一半!通常 vi 的指令除了上面鸟哥注明的常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的屏幕墙上,一有疑问可以马上的查询呦!这也是当初鸟哥使用 vim 的方法啦!