在linux系统下使用文本编辑器来编辑你的linux参数配置文件是一件非常重要的事情
为什么要学习vi?
原因1:所有的unix like系统都会内置vi文本编辑器
原因2:很多软件的编辑接口都会主动调用vi
原因3:vim具有程序编程能力
原因4:程序简单,编辑速度相当快
什么是vim?
vim(程序编辑器)是高级版的vi(文本编辑器),vim可以用颜色或者底线等方式来显示一些特殊的信息。举例来说,当你使用vim去编辑一个c程序语言的文件,vim会依据文件的扩展名或者是文件内的开头信息来判断文件的内容2️⃣自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息
vi的3种模式
vi共有3种模式,分别为一般模式,编辑模式,命令行模式。
一般模式
vi打开文件的默认模式,该模式下,我们可以光标的移动,文字的复制,粘贴以及删除操作
编辑模式
顾名思义,编辑模式主要用于编辑文件内容。
进入编辑模式:在一般模式下按下“i,I,o,O,a,A,r,R”等任何一个字母之后才会进入编辑模式,注意进入编辑模式的界面会改变,vi的左下角会出现insert或者replace的字样,就表示进入了编辑模式。
回到一般模式:点击【Esc】按键就可以回到一般模式了
命令行模式
在命令行模式中,可以通过输入相关的命令来查询数据,替换数据,保存数据,离开vi,显示行号等操作。
进入命令行模式
在一般模式中,按下“:,/,?”3个按键中的其中一个,就可以进入到命令行模式,进入命令行模式之后,光标移动到了最下面的一行。
回到一般模式:点击【Esc】按键就可以回到一般模式了
注意:一边模式可以和编辑模式或者命令行模式相互切换,但是编辑模式不能喝命令行模式相互切换
常用的vi按键说明
注意:下面组合按键中的n表示数字
ctrl+f:相当于Page Down按钮(一般模式下使用ctrl+f或者page down,编辑模式只能使用page down)
ctrl+b:相当于page up按钮(一般模式下使用ctrl+b或者page up,编辑模式下之只能使用page up)
功能键Home:移动到这一行的最前面的字符处
功能键End:移动到这一行的最后面的字符处
G:移动到这个文件的最后一行
nG:n是数字,表示移动到这个文件的第n行,例如:30G,表示移动到这个文件的第30行
gg:移动到这个文件的第一行,相当于1G
n+enter:n为数字,表示向下移动n行
/word: 向下寻找字符串,word为字符串,例如要在文件中查找字符串man,就输入/word
?word:向上寻找字符串,word为字符串,例如要在文件中向上寻找名称为word的字符串
/word和?word与n,N结合是非常有用的,可以让你重复的找到一个关键字,n表示重复上一个操作,N和n相反,表示反向进行前一个操作。
:n1,n2s/word1/word2/g:n1和n2都是数字,在第n1和n2行之间寻找word1这个字符串,并将该字符串替换为word2。
:n1,$s/word1/word2/g:在n1行和最后一行查找word1字符串,并将word1替换为word2
:n1,$s/word1/word2/gc:在n1行到最后一行查找word1字符串,并将word1替换为word2,在每次替换的时候提示用户,是否需要替换
x,X:x表示向后删除一个字符,X表示向前删除一个字符
nx,nX:nx表示向后删除n个字符,nX表示向前删除n个字符
dd:删除当前行
ndd:删除光标所在的向下n行,包括当前行,比如:10dd,表示删除10行
yy:复制光标所在的这一行
nyy:复制光标所在的向下n行
p,P:p表示将已经复制的数据粘贴在光标下一行,P则是粘贴在上一行
u:撤销
ctrl+r:重做一次
.:重复前一个操作,ctrl+r相当于.
i,I:一般模式切换到编辑模式,i为从目前光标所在处插入,I为目前所在行的第一个非空格符处开始插入
a,A:一般模式切换到编辑模式,a为在目前光标所在的下一个字符处开始插入,A为光标所在行的最后一个字符处开始插入
o,O:一般模式切换到编辑模式,o为目前光标所在的下一行插入新行,O为在目前光标所在处的上一行插入新的一行
r,R:一般模式切换到编辑模式,r只会替换光标所在的那一个字符,R会一直替换光标所在的文字,直到按下Esc按钮
:w:将编辑的数据写入到磁盘文件中
:w!:将文件属性设置为只读时,强制写入该文件,不过,到底能不能写入,还是跟你对该文件的文件权限有关
:q:离开vi
:q!:若曾经修改过文件,又不想存储,使用“!”为强制离开不保存文件
:wq:保存后离开
:wq!:强制保存后离开
:w[filename]:将标记的数据保存成另一个文件(另存为)
!在vi中经常具有“强制”的意思
:set nu:显示行号,设置之后,会在每一行的前端显示该行的行号
:set nonu:与set nu相反,为取消行号
觉得上面的笔记有用的朋友们可以关注我,接下来我会陆陆续续更新自己的一些学习笔记,不止linux哦,喜欢就给我个赞吧。