11.1 了解vi
前面我i们已经在基础命令中大致了解了vi,本章我们针对vi来细讲一下,vi和vim
11.1.1 什么是vi/vim?
vi和vim,都是一个模块化的文本编辑工具,换句话讲,通过vi下的一系列的命令,可以实现对文本文件的大多数写入与更改。vim是vi的增强版 功能一致,可视化效果更好一些。去鼠标化 编辑更加方便 可定制化同时,因为vi是一个模块,因此可大致分为以下三个模块
- 查看模式
- 插入模式·
- 末行模式
还有一种不常用的模式:替换模式
我们一个一个来讲
11.2 进入vi
进入vi命令格式如下:
vi 文件名
(这里要注意的是,vi只能进入一般文件,不能进入目录,若目标没有文件名的文件,泽慧创建一个新的一般文件)
这里我们来看例子
现在根目录有上述文件:
1.txt anaconda-ks.cfg passwd (且都是一般文件)
我们现在进入passwd文件
vi passwd
看结果
我们退出,再vi一个2.txt
可以看到,这个文件什么都没有,这是新创建了一个普通文件,文件名为2.txt
我们查看一下
出现文件名2.txt。
小总结:
(1)如果这个文件是存在的,而且是文本文件,那么vi就会直接打开这个文件
(2)如果这个文件是存在的,而且是目录文件,那么vi也可以打开这个文件,但是无法正常的保存
(3)这个文件不存在 ,vi会自动的创建一个新的空文件
我们现在了解到了怎么进入vi模块了,接下来我们来详细了解vi的三个常用模式和一个不常用模式
11.3 vi模式
上面我们了解到,xi有三个模式,分别为编辑模式,插入模式,末行模式和一个不常用模式替换模式,四者关系如下:
我们先来说查看模式
11.3.1 查看模式
这是进入文档后的默认模式,我们再执行vi或vim命令之后即可进入该模式。这个模式作用也很多,具体如下:
- 删除 复制 剪切 黏贴 替换单个字符等一些列针对内容的操作
- 查看模式也是其他模式的中转站,通过该模式可以进入其他模式
(注意:其他模式不能互相切换,必须进入查看模式才可以进行切换)复制内容
- 单行复制 yy
p - 小:将剪切/复制的内容,粘贴到当前所在的行的下一行
P - 大:将剪切/复制的内容,粘贴到当前所在的行的上一行
- 多行复制 数字yy
- 我们来看一下这个操作,如下图,普通文本文件下有以下内容
我们对五到七行内容进行粘贴,操作如下光标移动至第五行,直接输入3yy;这是我们可以看到下面出现下图字样说明复制成功,接下来我们光标移动至最后一行之后直接小写p看结果可以发现,我们下面加了三行,正是我们复制的那三行,完成!下一个内容剪切内容(删除内容)
- 单行剪切(删除) dd
- 多行剪切(删除) 数字 dd
- 光标之前的一个字符到行首的内容 d0
- 光标到行尾的内容 d$
- 删除光标所在位置的词组 dw
- x 删除一个字符
剪切和复制本质上来说没有什么区别,唯一的区别是赋值内容保留了原来的文本文件,剪切内容并没有保留原来的文本文件,因此在执行剪切模式未进行粘贴时,就相当于进行删除操作了。我们还是来看例子了解,还是上述文件,我们删除第六行。操作如下:光标移动至第六行,dd看结果第六行的I LOVE YOU消失,完成!移动光标
- h 左移光标
- l 右移光标
- j 下移光标
- k 上移光标
- H 移动到当前屏幕的第一行,注意不是文档的第一行
- L 移动到当前屏幕的最后一行,注意不是文档的最后一行
- M 移动到当前屏幕的中间行
移动光标,这里我们只提一下,小键盘的8,6,2,4也可以进行光标的移动,同时方向键也可以进行光标的移动!翻页操作
- ctrl+f 下翻一页
- pgdn 下翻一页
- ctrl+b 上翻一页
- pgup 上翻一页
- ctrl+d 上翻半页
- ctrl+u 下翻半页
这里我们也不多赘述,大家可以在/etc/passwd玩一玩v-v
定位跳转操作
- #G 数字+G ,定位到文档的指定行
- G 定位到文档的最后一行
- gg 定位到文档的第一行
- w 跳转到后一个词组的词首字母
- b 向前跳转一个单词
这些操作主要实现跳转功能,可以让光标快速跳转到你想要的地方,省的一页一页往下翻或者一条一条读,但前提是你需要知道他是哪一行!!还是举个例子吧,还是passwd文件,我们进行操作如上图,现在光标唯一第一行,我们需要让他快速跳转到第十行,需要进行以下操作:直接输入10gg,我们看结果可以看到,已经进行了跳转,命令完成!撤销功能
u 撤销上一步操作如果我们在实操中发现我们删错了,在未进行保存的情况下可使用上述命令进行撤销操作!!!还是拿上面的passwd来举例,我们将第一行删除之后的结果如图现在我们去撤销,需进行下面的操作:查看模式下直接按u即可!看结果ok,下一步!查询功能
- 输入/ 想要查询的字段 搜索功能
- n 向下跳转一个搜索关键词
- N 向上跳转一个搜素关键词
我们直接进行举例,还是passwd表,我们现在要查询sbin,则需要进行以下操作:查看模式输入/sbin:可以看到左下角有我们输入的内容,接下来我们看结果:注:(查询功能仅仅在vim模式下有用!!!!)另外需要注意:
- cat、head、tail、more、less 和vi 都可以查看文件中的内容
- 但是vi,主要是用于对文件内容进行修改
- 而其他的命令是查看文件的内容
查询功能我们已经有了一个大概的了解,接下来我们来看插入模式
11.3.2 插入模式
插入模式,就是对文件里面的文本内容进行编辑和修改,那么我们先从进入插入模式开始了解。
进入插入模式·
在查看模式输入以下字符即可进入插入模式操作
- a:在光标所在位置后输入
- i:在光标所在位置前输入
- o:换行进行输入
- A:光标所在位置行尾进行输入
- I:光标所在位置行首进行输入
- O:在光标所在上一行进行输入
(注:必须是查看模式才可以进入此模式,另外如果想要退出输入模式按esc即可切换至查看模式)
这个模式实在不知道该咋演示,就不做演示了,直接进入下一个模块!!
11.3.3 末行模式
末行模式的功能:
- 1. 主要是用于执行各种的命令
- 2. 显示行号
- 3. 保存、退出
- 4. 行跳转
说白了,就是用于执行一些命令或者与bash进行交互,或者执行一系列自动化指令
进入末行模式:
shift+冒号”:“
(注意,冒号必须为英文冒号才可以进入末行模式!!!)
末行模式操作:
关于保存退出:
- 保存 :w
- 退出 :q
- 保存退出:wq
- 强制保存退出 :wq!
- 强制退出 :q!
- 保存退出快捷方式 :x ZZ shift+zz
vi在大部分情况下只能通过末行模式或者快捷方式才可以进行保存退出,这里不多进行赘述,也不举例讲解,各位可以自己实操一下!!关于命令执行:
- 命令执行 :!command [option] 参数
- 读取命令执行结果 :r !command [option] 参数
- 读取其他文件的内容: r /path/file
这里我们通过举例来大概看一下命令执行的具体操作,例子如下:现有一个空文件1.txt,现在要求将passwd的内容复制至1.txt下,我们需要进行以下操作在末行模式下输入以下内容r ! cat passwd
我们来看结果
我们再来举一个例子,将当前时间放至文件最后一行
操作如下:
r ! date
我们来看结果
时间没毛病,ok了!!下一个
关于行号及高亮:
- 行号:set nu
- 取消行号:set nonu
- 取消高亮: nohl
- 显示高亮: hl
读者所用的一直是显示行号,如果不想显示行好的话,则需要进行以下操作
在末行模式输入以下内容:set nonu 即可取消行号
如下图:
范围替换内容:
指定范围替换
- 1,3 s/bin/cin/g :起始行,结束行 s/查找内容/替换内容/g g表示全部替换
全文范围替换
- :% s/nologin/login/g %表示全文
特殊的替换
- :% s#/123#@123#g #作为替换命令格式分隔符
举个例子来结束末行模式,现有文件1.txt内容如下图:
将1.txt的sbin替换为225,需进行如下操作
末行模式下输入下面指令
% s/sbin/225/g
看结果
这里需要注意的是,如果内容中有"/"的情况下,分隔符可以使用其他符号进行替换,但不能使用空格进行替换!!!!
11.3.4 替换模式
因为不太常用,这里我们简单提一下,替换模式与插入模式的用法大致相同,不同的是,替换模式下在光标前输入一个字符时,光标后面会自动删除一个字符,以此来达到替换的效果!!!
替换模式的进入及退出方法:
- 进入方法 R
- 退出方法 esc
完成,下一个
11.4 vim配置文件的使用
通过修改配置文件,我们可以定义一些配置文件的命令。例如进入文件显示行号,显示高亮或者设置tab时的空格字数等操作,具体操作如下
配置文件的位置
- 全局配置文件
- /etc/vimrc (作用范围是系统当中所有的用户 一般情况不建议使用)
- 用户配置文件
- 位置是在当前用户的家目录下 .vimrc ,(建议使用的文件。)
注意 : 用户 vim 配置文件有可能不存在需要手工创建。添加内容如下:set nu(显示行号)
11.5vi处理文件常见的错误情况
第一种:用vi打开文件后,发现文件是空白的
原因1:路径错误
原因2:文件名错误
原因3:文件被删除
第二种:编辑的文件无法保存
原因1:我们用vi打开的是一个目录,而不是一个文件
原因2:没有权限进行写操作【主要是针对普通用户会有这个问题】
第三种:(如下图)
这里产生警告的原因:
1. 用vi打开文件后,写入了内容,但是这个文件被意外关闭了【例如 直接关闭终端】
2. 文件被意外关闭,会产生一个崩溃缓存文件,这个文件是一个隐藏文件,而且这个文件的后缀是 .sw
3. 就是由于这个崩溃缓存文件的存在,才导致每次打开文件的是有一个警告信息
产生第三种情况的解决方法:
删除所有的崩溃缓存文件,就不再产生警告了
好了,今天的内容就到这里了,讲得不好还请各位见谅,如有疑问或错误请评论区联系作者,最后感谢各位的观看,再见!!