Linux vi编辑器的使用

vi是linux系统上最基本的文本编辑器,类似于windows下的notepad(记事本)编辑器;vi编辑器工作在字符模式下,没有图形界面,vim是vi编辑器的加强版,比vi更加容易使用,vi的命令几乎都可以在vim上使用。

vi有三种模式,一种是命令模式,一种是编辑模式,一种是底行模式。

vi的简单使用

打开编辑器

在终端输入vi filename,回车,进入vi全屏编辑界面。

编辑文件

输入i进入插入模式,可以编辑文件内容,编辑完成,按ese键退出插入模式。

常用的插入模式为i模式,表示从当前光标的位置开始插入,其他的插入命令包括:
a表示从当前光标位置的下一个位置开始插入文字;
o表示从新的一行的行首开始插入文字;
O表示从光标所在行的上面新插入一行文字。

保存退出文件

在命令模式下,输入进入底行模式,再wq(写入并退出)回车保存文件并退出编辑器。

其他常用的命令包括:w(仅写入不退出)q!不保存强制退出

取消编辑

在插入模式下,按ese退出插入模式,在输入q!(q表示退出,!表示不保存),回车键取消编辑。

删除内容

在命令行模式下
输入dd表示删除光标所在行;
输入#dd表示从光标所在行开始删除#行;
输入x可删除光标所在位置的后面的一个字符;
输入#x表示删除光标所在位置后面的#个字符;
输入X表示删除光标所在位置前面的一个字符;
输入#X表示删除光标所在位置前面的#个字符。

使用dd后按下p表示剪切粘贴,删除后的行会被剪切到光标所在的行。

其实在插入模式下,也可以直接back/delete删除内容。

复制粘贴

在命令模式下
使用yy复制光标所在行到缓冲区;
使用#yy复制所在行后的#行到缓冲区;
使用yw会把光标所在的第一个单词复制到缓冲区(注意一个单词的计算是从光标所在位置开始到一个单词的结束,所以复制单词时要把光标放置在单词的首字母开头的地方,空格不计算单词数量);
使用#yw会把光标所在的#个单词复制到缓冲区;

使用p把缓冲区的字符贴到光标所在位置。

移动光标

使用上下左右箭头键移动光标,或者使用 h(左)、j(下)、k(上)、l(右)。

搜索

在命令模式下,输入/搜索词,回车搜索,这个时候,使用小写的n可以在匹配到的字符串中从上往下移动,大写的N可以在匹配的字符串中从下往上移动。

替换

在搜索的情况下,按下s可以对光标所在位置的字符编辑成所需替换的字符,使用n或者N在搜索结果中移动光标,再使用.可以重复上一条编辑指令,使用这种形式可以对搜索到的结果进行替换。

可以使用全局替换的命令,指令构成为:1,$s/old/new/g,这条指令的意思是,从第一行一直替换到最后一行,s表示替换,把所有的old全部替换成new,g表示全文替换(一行里面有多个old都要全部替换成new)的意思。

撤销和恢复

在命令模式下,输入u撤销最后一步操作(相当于windows 的ctrl + z ),ctrl+r恢复上一步操作(相当于ctrl + y)。

讨论

描述使用vi的两种模式,如何打开两种模式

讨论:①vi有两种模式,一种是编辑模式,一种是命令模式。②使用vi filename 可以进入vi ,这个时候vi处于命令模式,在命令模式下,可以使用i 进入到编辑模式,表示从当前光标位置开始插入;可以使用a进入编辑模式,表示从当前光标位置的下一个位置开始插入文字;使用小写o表示从新的一行的行首开始插入文件;使用大写O表示从光标所在行的上面的新的一行插入文字。③在编辑模式下,使用esc可以回到命令模式下。

如何插入一行

讨论:在命令模式下,使用小写o表示从新的一行的行首开始插入文件;使用大写O表示从光标所在行的上面的新的一行插入文字。

怎么复制粘贴一行文本

讨论:①在命令模式下,vi使用yy复制光标所在的行;使用数字+yy表示复制光标所在的后n行;使用yw复制光标所在的第一个单词,使用数字+yw复制光标所在的n个单词;②vi使用小写字母p来粘贴缓冲区的字符到光标所在位置。

怎么在文件中匹配,怎么替换所匹配到的内容

讨论:①在命令模式下,vi使用/+搜索词对文件进行匹配,匹配成功后,可以使用小写n对匹配项从上而下移动,或者使用大写N对匹配项从下而上移动;②在命令模式下,可以使用s命令对光标所在位置的字符进行编辑,编辑后退出编辑模式,使用n在匹配项中移动,再使用 . 来重复上一条编辑指令;③可以使用全局替换指令对内容进行匹配和替换,指令举例如下:1,$s/old/new/g。

怎么重复或者撤销上一条命令

讨论:可以使用 . 重复上一条指令;使用 u 撤销上一条指令。

怎么在保存或者不保存的情况下退出vi

讨论:如果不需要保存,可以使用 :q! 强制退出vi,如果需要保存,可以使用 :qw 退出,其中w表示存盘。