Linux学习笔记(第零篇)计算机基础Linux学习笔记(第零篇)Linux文件系统及Shell
Linux学习笔记(第一篇)零散命令
Linux学习笔记(第二篇)目录操作命令
Linux学习笔记(第三篇)文件操作命令
Linux学习笔记(第四篇)文件内容操作命令+正则表达式+重定向和管道
Linux学习笔记(第五篇)归档及压缩命令
Linux学习笔记(第六篇)Vi编辑器
Linux学习笔记(第七篇)用户和组管理
Linux学习笔记(第八篇)磁盘与文件系统管理
Linux学习笔记(第九篇)逻辑卷管理(LVM)
Linux学习笔记(第十篇)进程管理
Linux学习笔记(第十一篇)服务管理
Linux学习笔记(第十二篇)网络基础
Linux学习笔记(第十三篇)通信管理
Linux学习笔记(第十四篇)管理常用网络服务
Linux学习笔记(第十五篇)常用网络服务器配置
Part6–Vi编辑器
1.编辑器概述:
- 简单的编辑任务一般都会涉及以下操作:
(1) 打开文件操作:创建新文件或者打开新文件。
(2)输入文本、删除文本、搜索文本、修改文本操作。
(3)关闭操作:保存文本并退出编辑。 - 文本编辑器的作用:
(1)创建或修改文本文件。
(2)维护Linux系统中的各种配置文件。 - Linux中最常用的文本编辑器:
(1)Vi:类Linux系统中默认的文本编辑器。
(2)Vim:Vi编辑器的增强版本,习惯上也称为Vi。
2.Vi编辑器的工作模式:
- 命令模式:是进入Vi的初始模式,也是Vi的基本工作模式,主要包括移动光标、删除文本、粘贴文本和查找文本等。
- 文本输入模式:可录入文件内容,该模式下除Esc键以外的所有其它键都作为输入字符添加到被编辑的文本中,文本输入完后必须按Esc键从文本输入模式返回到命令模式后,才能继续完成其它操作。
- 状态行:为在屏幕底部的一行,命令模式下的有些命令以“:”号、“/”号和“?”号开头,显示在状态行,反馈用户编辑操作的结果,显示错误或其它信息。
3.Vi编辑器的部分原理:
- Vi编辑器为用户所要创建或修改的文件建立了一个临时的工作区(缓冲区或工作缓冲区)。
- 如果用户创建新文件时,Vi为新文件打开一个缓冲区。
- 如果指定的文件已存在,Vi将源文件复制到缓冲区,用户对文件所做的修改只作用于缓冲区中文件的副本而不是源文件。
- 如果用户希望保存所做的修改,必须用保存的已修改文件(缓冲区中的副本)替换源文件。
- 对源文件所做的修改不会自动保存,用户必须发出写命令才能保存文件。
4.Vi编辑器的启动与退出:
- 启动Vi:
(1)vi [options] file:编辑已有文件。
(2)vi:创建新的工作缓冲区,可以写入内容。
(3)vi -R:-R表示以只读方式打开文件,不允许修改,但可以使用w!强制写入。vi的一个特殊版本——view,总是以制度方式打开文件。
(4)vi -c:-c表示指定的vi命令作为启动的一部分,通常用来在开始编辑之前定位光标。例如,vi -c/hello myfirst表示在打开myfirst文件之后,搜索hello字符串,并将光标定位到搜索位置。
- 退出Vi:
【保存文件】
(1)保存::w
(2)另存为其它文件::w 路径/新文件名
(3)未修改退出::q
(3)放弃对文件内容的修改,并退出Vi::q!
(4)保存文件退出Vi::wq或ZZ
(5)注:Vi通常不允许覆盖已存在的文件,若要覆盖,用:w!命令或:wq!命令。
【例子】
(1)对于已存在的f1文件的保存与退出:修改内容后,有两种保存退出方案。一种是先按Esc键,再:w(用当前f1的缓冲区副本替换f1),然后:q(将缓冲区内容写入文件f1,并退出Vi编辑器); 另一种是先按Esc键,再:wq(保存和退出同时进行)。
(2)对于直接用vi命令打开的缓冲区的保存与退出:修改内容后,有两种保存退出方案。一种是先按Esc键,再:w 新文件名(当前缓冲区的文本内容保存到新文件中),然后:q(将缓冲区内容写入文件f1,并退出Vi编辑器); 另一种是先按Esc键,再:wq 新文件名(保存和退出同时进行)。
5.Vi编辑器的相关命令:
- Vi编辑器刚启动时,处于命令模式,只有在文本输入模式下,方可输入文本。
- 命令模式切换到文本输入模式的命令键:
(1)i:在光标左侧输入正文。
(2)I:在光标所在行开头输入正文。
(3)a:在光标右侧输入正文。
(4)A:在光标所在行结尾输入正文。
(5)o:在光标所在行下一行插入新行。
(6)O:在光标所在行上一行插入新行。 - 文本输入模式下的特殊键:
(1)空格键(Spacebar):输入一个空格。
(2)制表键(Tab):在光标前插入8个空格(空格数可以配置)。
(3)退档键(Backspace):删除光标前面一个字符,并且光标回退一个字符。
(4)回车键(Return):添加新行,如果光标处于行中间,则在光标位置将本行截断。
(5)↑↓←→ / kjhl:上下左右移动光标。
(6)w、b:光标向右、向左移动一个字(光标移动到字首、字尾)。
(7)e:光标移动到字尾。
(8)Home键 / “^” / 数字0:跳转至行首。
(9)End键 / “$”:跳转至行尾。
(10)1G / gg:跳转至文件的首行。
(11)G:跳转至文件的末尾行。
(12)行号G / :行号:跳转至文件中指定的行。
(13)+和-:光标下,上移动一行。
(14)空格键、退格键:光标右移、左移一格。
(15)回车键:光标移动到下一行的行首。 - 命令模式下的文本修改:
(1)x:删除光标位置指定的字符,连续按x多次,可连续删除多个字符,输入5x可以一次删除5个字符。
(2)dd:删除光标所在行,连续按dd多次,可连续删除多行,输入3dd可以一次删除3行。
(3)u:撤销最近的修改。
(4)U:撤销对当前行的所有修改。
(5)r:替换光标位置上的一个字符。
(6)R:替换从光标位置开始的字符,同时进入文本输入模式,按Esc键才能回到命令模式。
(7).(点):重复上一次修改。 - 命令模式下的查找:
(1)/word:从上而下在文件中查找字符串"word"。
(2)?word:从下而上在文件中查找字符串"word"。
(3)n:定位下一个匹配的被查找字符串。
(4)N:定义上一个匹配的被查找字符串。
6.Vi编辑器的在线帮助:
- 命令模式下输入:help,会显示帮助命令。
- 输入:q,退出帮助屏幕,返回到文件之中。
- 为获得指定命令的帮助信息,在:help后面跟着该命令名。
- 例如::help wq
7.Vi编辑器的复杂应用:
- 编辑多个文件的部分原理与命令:
(1)Vi可以一次打开多个文件进行编辑。
(2)每一个文件编辑结束后,不直接退出Vi,而是进行下一个文件的编辑。
(3)可以使用命令:n(next)启动下一个文件的编辑,vi将用下一个文件的内容替换缓冲区的内容,所有如果上一个文件尚未保存,则会提示出错,可以用:n!强制切换文件,但将丢失上一个文件的修改。
(4)使用:ar命令查看Vi打开的文件名列表。
(5)在Vi中打开并编辑另一个文件:e file
(6)读入另一个文件:r file,读入的文件将追加到光标之后,称为正在编辑的当前文件的一部分。
(7)写入另一个文件:[n-start, n-end] w file,如果不指定行,则写入整个文件。如果文件已存在,则提示出错,但可以使用w!强制写入。例子:5,100 w temp将当前编辑的文件的第5行到100行写入到temp文件中。
- 命令模式下的重排文本:
(1)d:删除指定位置的文本,并保存到临时缓冲区。
(2)dd:删除一行内容,光标下移一行。
(3)y:复制指定位置的文本到临时缓冲区。
(4)yy:将当前行复制到临时缓冲区。
(5)P:将临时缓冲区的文本插入到光标位置之上。
(6)p:将临时缓冲区的文本插入到光标位置之下。 - 命令模式下Vi操作符的域:
(1)$:光标从当前位置移动到行尾。
(2)0:光标从当前位置移动到行首。
(3)e / w:光标从当前位置移动到字尾。
(4)b:光标从当前位置移动到字首。
【例子】
(1) d$:从光标位置开始,删除到行尾。
(2)d0: 从光标位置开始,删除到行首。
(3)3dw:从光标位置开始,删除3个字。
(4)y $:(注:同(1))从光标位置开始,复制至行尾放到临时缓冲区中。
8.Vi编辑器的缓冲区:
Vi编辑器有多个用作临时存储的缓冲区。
- Vi缓冲区的类型:
【工作缓冲区】
(1)保存用户文件副本。
(2)当Vi打开一个文件进行编辑时,文件内容被载入到工作缓冲区。
(3)执行Vi写入命令之前,所有的修改只是对工作缓冲区的副本进行修改,执行了写入命令后,缓冲区内容真正写入文件,修改才永久有效。
(4)Vi打开多个文件进行编辑时,工作缓冲区存储当前编辑的文件内容,主要修改丢失问题。
【数字编号缓冲区】
(1)编号为1到9的9个临时缓冲区。
(2)每次删除或复制的文本存放在这些缓冲区中。
(3)缓冲区1总时保存最新内容,其它缓冲区按数字排列一次存储从新到旧的内容(类似队列FIFO思想)。
(4)访问指定的缓冲区:双引号+缓冲区编号+p,例如:" 6p表示将第6个缓冲区的内容粘贴到光标位置。
【字母编号缓冲区】
(1)26个以英文字母编号的缓冲区。
(2)系统不自动将删除或复制的内容存储到字母缓冲区。用户需要指定将内容存储到哪个缓冲区:双引号+缓冲区名+命令。例如:" wdd表示将当前行删除并复制到w缓冲区。" e7yy表示复制当前光标开始的7行内容到e缓冲区。
9.其他Vi命令:
- 运行Shell命令:用户可以在Vi的命令行中运行Shell命令。使用时:!开头,例如::!date表示显示当前时间,:!pwd表示显示当前目录,:r!date表示当前日期和时间会被写入当前行下。
- J命令:连接两行,将当前行的下一行连接到当前光标所在行之后。
- Vi的-r选项:当编辑文件时,Vi或者UNIX崩溃,-r选项可以恢复原来的文件。例如:vi -r mypro.cpp恢复上次崩溃前的mypro.cpp文件。
10.定制Vi编辑器:
- 参数默认值:
(1)Vi编辑器有许多参数(选项或者标识)可供用户设置,从而控制工作环境,这些参数有默认值,但可以调整。
(2)在命令模式,输入:set all即可查看完整的参数列表以及它们在系统上的当前设置。
(3)参数分为三种类型:布尔、数字式、串。
(4) 布尔:set X或set noX(例如:set nu或:set nonu表示显示行号或不显示行号)。
(5):set ignorecase:搜索时忽略大小写。
(6) :set noignorecase:大小写敏感。
(7)数字式或串:set X=值(等号两边没有空格)。
(8)set X?可以显示参数X的值。 - 缩写操作符:
(1):ab命令用来定义缩写,取消缩写用:unab命令。例如::ab sqp suiyongping、:unab syp
(2):map命令用来定义缩写(宏操作符),用map可以指定单个键代表键序列。例如::map q 5x、:unmap q,:map #2 3x(给3x指定F2键)、:unmap #2