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