鸟哥的 Linux 私房菜第10章-vim 程序编辑器.pdf





《鸟哥的 Linux 私房菜第10章-vim 程序编辑器.pdf》由会员分享,可在线阅读,更多相关《鸟哥的 Linux 私房菜第10章-vim 程序编辑器.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、鸟哥的鸟哥的 Linux Linux 私房菜私房菜 为取得较佳浏览结果,请爱用 firefox 浏览本网页 第十章、vim 程序编辑器 最近更新日期:2008/01/13 系统管理员的重要工作就是得要修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的文字接口的文书编辑器。在所有版本的 Linux 上头都会有的一套文书编辑器就是 vi,而且很多软件默认也是使用 vi 做为他们编辑的接口,因此鸟哥建议您务必要学会使用 vi 这个正规的文书编辑器。此外,vim 是进阶版的 vi,vim 不但可以用不同颜色显示文字内容,还能够进行诸如 shell script,C program 等程序编辑
2、功能,你可以将 vim 视为一种程序编辑器!鸟哥也是用 vim 编辑鸟站的网页文章呢!_ 1.vi 与 vim:为何要学 vim?2.vi 的使用 2.1 简易执行范例 2.2 按键说明 2.3 一个案例的练习 2.4 vim 的暂存档、救援回复与开启时的警告讯息 3.vim 的额外功能 3.1 区块选择(Visual Block)3.2 多档案编辑 3.3 多窗口功能 3.4 vim 环境设定与记录:/.vimrc,/.viminfo 4.其他 vim 使用注意事项 4.1 中文编码的问题 4.2 DOS 与 Linux 的断行字符:dos2unix,unix2dos 4.3 语系编码转换:
3、iconv 5.重点回顾 6.本章习题 7.参考数据与延伸阅读 8.针对本文的建议:http:/phorum.vbird.org/viewtopic.php?t=23883 vi 与 vim:为何要学 vim?由前面一路走来,我们一直建议使用文本模式来处理 Linux 的系统设定问题,因为不但可以让你比较容易了解到 Linux 的运作状况,也比较容易了解整个设定的基本精神,更能保证你的修改可以顺利的被运作。所以,在 Linux 的系统中使用文本编辑器来编辑你的 Linux 参数配置文件,可是一件很重要的事情呦!也因此呢,系统管理员至少应该要熟悉一种字处理器的!Tips:Tips:这里要再次的强
4、调,不同的 Linux distribution 各有其不同的附加软件,例如 Red Hat Enterprise Linux 与 Fedora 的 ntsysv 与 setup 等,而 SuSE 则有 YOU 管理工具等等,因此,如果你只会使用此种类型的软件来控制你的 Linux 系统时,当接管不同的 Linux distributions 时,呵呵!那可就苦恼了!在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了!与微软的 Windows 系统不同的是,如果你用惯了 Microsoft Word 或 Corel Wo
5、rdperfect 的话,那么除了 X window 里面的图形接口编辑程序(如 xemacs)用起来尚可应付外,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观与方便。Tips:Tips:什么是纯文本档?其实档案记录的就是 0 与 1,而我们透过编码系统来将这些 0 与 1 转成我们认识的文字就是了。在第零章里面的数据表示方式有较多说明,请自行查阅。ASCII 就是其中一种广为使用的文字编码系统,在 ASCII 系统中的图标与代码可以参考 http:/zh.wikipedia.org/wiki/ASCII 呢!那么 Linux 在文字接口下的文书编辑器有哪些呢?其实有非
6、常多喔!常常听到的就有:emacs,pico,nano,joe,与 vim 等等(注 1)。既然有这么多文字接口的文书编辑器,那么我们为什么一定要学 vi 啊?还有那个 vim 是做啥用的?底下就来谈一谈先!为何要学 vim?文书编辑器那么多,我们之前在第五章也曾经介绍过那简单好用的 nano,既然已经学会了 nano,干嘛鸟哥还一直要你学这不是很友善的 vi 呢?其实是有原因的啦!因为:所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在;很多个别软件的编辑接口都会主动呼叫 vi(例如未来会谈到的 crontab,visudo,edquota 等指令);
7、vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;因为程序简单,编辑速度相当快速。其实重点是上述的第二点,因为有太多 Linux 上面的指令都默认使用 vi 作为数据编辑的接口,所以你必须、一定要学会 vi,否则很多指令你根本就无法操作呢!这样说,有刺激到你务必要学会 vi 的热情了吗?_ 那么什么是 vim 呢?其实你可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。举例来说,当你使用 vim 去编辑一个 C 程序语言的档案,或者是我们后续会谈到的 shell script 程序时,vim 会依据档案的扩展名或者是档案内
8、的开头信息,判断该档案的内容而自动的呼叫该程序的语法判断式,再以颜色来显示程序代码与一般信息。也就是说,这个 vim 是个 程序编辑器 啦!甚至一些 Linux 基础配置文件内的语法,都能够用 vim 来检查呢!例如我们在第八章谈到的/etc/fstab 这个档案的内容。简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的一项很好用的工具,就连 vim 的官方网站(http:/www.vim.org)自己也说 vim 是一个程序开发工具而不是文字处理软件_。因为 vim 里面加入了很多额外的功能,例如支持正规表示法的搜寻架构、多档案
9、编辑、区块复制等等。这对于我们在 Linux 上面进行一些配置文件的修订工作时,是很棒的一项功能呢!Tips:Tips:什么时候会使用到 vim 呢?其实鸟哥的整个网站都是在 vim 的环境下一字一字的建立起来的喔!早期鸟哥使用网页制作软件在编写网页,但是老是发现网页编辑软件都不怎么友善,尤其是写到 PHP 方面的程序代码时。后来就干脆不使用所见即所得的编辑软件,直接使用 vim,然后标签(tag)也都自行用键盘输入!这样整个档案也比较干净!所以说,鸟哥我是很喜欢 vim 的啦!_ 底下鸟哥会先就简单的 vi 做个介绍,然后再跟大家报告一下 vim 的额外功能与用法呢!vi 的使用 基本上 v
10、i 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。这三种模式的作用分别是:一般模式:vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理档案内容,也可以使用复制、贴上来处理你的文件数据。编辑模式:在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的!要等到你按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现 INSERT 或 REPLACE 的字样,此时才可以进行编辑。而如果要回到一般模式
11、时,则必须要按下Esc这个按键即可退出编辑模式。指令列命令模式:在一般模式当中,输入:/?三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以提供你搜寻资料的动作,而读取、存盘、大量取代字符、离开 vi、显示行号等等的动作则是在此模式中达成的!简单的说,我们可以将这三个模式想成底下的图标来表示:图 2.1、vi 三种模式的相互关系 注意到上面的图标,你会发现一般模式可与编辑模式及指令列模式切换,但编辑模式与指令列模式之间不可互相切换喔!这非常重要啦!闲话不多说,我们底下以一个简单的例子来进行说明吧!简易执行范例 如果你想要使用 vi 来建立一个名为 test.txt 的档
12、案时,你可以这样做:使用 vi 进入一般模式;rootwww#vi test.txt 直接输入 vi 档名就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加档名,不管该档名存在与否!整个画面主要分为两部份,上半部与最底下一行两者可以视为独立的。如下图 2.1.1 所示,图中那个虚线是不存在的,鸟哥用来说明而已啦!上半部显示的是档案的实际内容,最底下一行则是状态显示列(如下图的New File信息),或者是命令下达列喔!图 2.1.1、用 vi 开启一个新档案 如果你开启的档案是旧档(已经存在的档案),则可能会出现如下的信息:图 2.1.2、用 vi 开启一个旧档案 如上图 2.1
13、.2 所示,箭头所指的那个/etc/man.config 141L,4617C代表的是档名为/etc/man.conf,档案内有 141 行 以及具有 4617 个字符的意思!那一行的内容并不是在档案内,而是 vi 显示一些信息的地方喔!此时是在一般模式的环境下啦。接下来开始来输入吧!按下 i 进入编辑模式,开始编辑文字 在一般模式之中,只要按下 i,o,a 等字符就可以进入编辑模式了!在编辑模式当中,你可以发现在左下角状态栏中会出现 INSERT-的字样,那就是可以输入任意字符的提示啰!这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编
14、辑啰!图 2.1.3、开始用 vi 来进行编辑 Tips:Tips:在 vi 里面,tab 这个按钮所得到的结果与空格符所得到的结果是不一样的,特别强调一下!按下 ESC 按钮回到一般模式 好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 INSERT 不见了!在一般模式中按下:wq 储存后离开 vi OK,我们要存档了,存盘并离开的指令很简单,输入:wq即可存档离开!(注意了,按下:该光标就会移动到最底下一行去!)这时你在提示字符后面输入 ls l 即可看到我们刚刚建立的 test.txt 档案啦!
15、整个图示有点像底下这样:图 2.1.4、储存并离开 vi 环境 如此一来,你的档案 test.txt 就已经建立起来啰!需要注意的是,如果你的档案权限不对,例如为-r-r-r-时,那么可能会无法写入,此时可以使用强制写入的方式吗?可以!使用:wq!多加一个惊叹号即可!不过,需要特别注意呦!那个是在你的权限可以改变的情况下才能成立的!关于权限的概念,请自行回去翻一下第六章的内容吧!按键说明 除了上面简易范例的 i,Esc,:wq 之外,其实 vim 还有非常多的按键可以使用喔!在介绍之前还是要再次强调,vim 的三种模式只有一般模式可以与编辑、指令列模式切换,编辑模式与指令列模式之间并不能切换的
16、!这点在图 2.1 里面有介绍到,注意去看看喔!底下就来谈谈 vim 软件中会用到的按键功能吧!第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等 移动光标的方法 h 或 向左箭头键()光标向左移动一个字符 j 或 向下箭头键()光标向下移动一个字符 k 或 向上箭头键()光标向上移动一个字符 l 或 向右箭头键()光标向右移动一个字符 如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动 30 行,可以使用 30j 或 30 的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!Ctrl+
17、f 屏幕向下移动一页,相当于 Page Down按键(常用)Ctrl+b 屏幕向上移动一页,相当于 Page Up 按键(常用)Ctrl+d 屏幕向下移动半页 Ctrl+u 屏幕向上移动半页+光标移动到非空格符的下一列-光标移动到非空格符的上一列 n 那个 n 表示数字,例如 20。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。0 或功能键Home 这是数字 0:移动到这一行的最前面字符处(常用)$或功能键End 移动到这一行的最后面字符处(常用)H 光标移动到这个屏幕的最上方那一行的第一个字符 M 光标移动到这个屏幕的中央那一行的
18、第一个字符 L 光标移动到这个屏幕的最下方那一行的第一个字符 G 移动到这个档案的最后一行(常用)nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合:set nu)gg 移动到这个档案的第一行,相当于 1G 啊!(常用)n n 为数字。光标向下移动 n 行(常用)搜寻与取代/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入/vbird 即可!(常用)?word 向光标之上寻找一个字符串名称为 word 的字符串。n 这个 n 是英文按键。代表 重复前一个搜寻的动作。举例来说,如果刚刚我们
19、执行/vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!N 这个 N 是英文按键。与 n 刚好相反,为反向进行前一个搜寻动作。例如/vbird 后,按下 N 则表示向上搜寻 vbird。使用/word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2!举例来说,在
20、100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则::100,200s/vbird/VBIRD/g。(常用):1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!(常用):1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给用户确认(confirm)是否需要取代!(常用)删除、复制与贴上 x,X 在一行字当中,x 为向后删除一个字符(相当于 del 按键),X 为向前删除一个字符(相当于 backspace 亦即是退格键)(常用
21、)nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符,10 x。dd 删除游标所在的那一整列(常用)ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列(常用)d1G 删除光标所在到第一行的所有数据 dG 删除光标所在到最后一行的所有数据 d$删除游标所在处,到该行的最后一个字符 d0 那个是数字的 0,删除游标所在处,到该行的最前面一个字符 yy 复制游标所在的那一行(常用)nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)y1G 复制光标所在列到第一列的所有数据 yG 复制光标所在列到最后一
22、列的所有数据 y0 复制光标所在的那个字符到该行行首的所有数据 y$复制光标所在的那个字符到该行行尾的所有数据 p,P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后,那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)J 将光标所在列与下一列的数据结合成同一列 c 重复删除多个数据,例如向下删除 10 行,10cj u 复原前一个动作。(常用)Ctrl+r 重做上一个动作。(常用)这个 u 与 Ctrl+r
23、是很常用的指令!一个是复原,另一个则是重做一次 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!.不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点.就好了!(常用)第二部份:一般模式切换到编辑模式的可用的按钮说明 进入插入或取代的编辑模式 i,I 进入插入模式(Insert mode):i 为从目前光标所在处插入,I 为在目前所在行的第一个非空格符处开始插入。(常用)a,A 进入插入模式(Insert mode):a 为从目前光标所在的下一个字符处开始插入,A 为从光标所在行的最后一个字符处开始插入。(常用)o,O 进入插入模式(Insert
24、 mode):这是英文字母 o 的大小写。o 为 在目前光标所在的下一行处插入新的一行;O 为在目前光标所在处的上一行插入新的一行!(常用)r,R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止;(常用)上面这些按键中,在 vi 画面的左下角处会出现-INSERT-或-REPLACE-的字样。由名称就知道该动作了吧!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时,一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!Esc 退出编辑模式,回到一般模式中(常用)第三部份:一般模式切换到
25、指令列模式的可用的按钮说明 指令列的储存、离开等指令:w 将编辑的数据写入硬盘档案中(常用):w!若文件属性为只读时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关啊!:q 离开 vi(常用):q!若曾修改过档案,又不想储存,使用!为强制离开不储存档案。注意一下啊,那个惊叹号(!)在 vi 当中,常常具有强制的意思:wq 储存后离开,若为:wq!则为强制储存后离开(常用)ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!:w filename 将编辑的数据储存成另一个档案(类似另存新档):r filename 在编辑的数据中,读入另
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 鸟哥的 Linux 私房菜第10章-vim 程序编辑器 私房 10 vim 程序 编辑器

限制150内