vi/vim编辑器
vi/vim是一个强大的文本编辑器,是linux/Unix上最常用的文本编辑器,它的作用是建立,编辑,显示文本文件。vi/vim没有菜单,只有命令。vim与vi相比具有颜色显示功能,并且支持许多程序语法。
进入:vi/vim filename
1.一般模式:一旦进入该文件,就是一般模式。在该模式下,可以使用“上下左右”光标,可以使用“删除字符”或者“删除整行”来处理文件内容,也可以使用“复制,粘贴”来处理文件数据。
在一般模式下,输入“:或/或?”就可以将光标移到最下面的一行,在这个模式下,可以收缩数据,而且读取,存盘,大量删除字符,离开vi/vim,显示行号等操作都是在此模式下实现的。
2.编辑模式:在一般模式下无法进行编辑操作,要等到按下“i I a A o O r R”等字母后才会进入编辑模式。如果要回到一般模式时,则必须按下Esc键才可退出编辑模式
3.命令行命令模式:
:w 将编辑的数据写入硬盘文件中
:w!如文件为只读时,强制写入该文件。不过,是否能真正写入与文件权限有关
:wq 存储后离开
:wq!强制存储后离开
:q 离开vi
:q! 若曾经修改过文件但不想存储,使用!为强制离开不存储
:e! 将文件还原到最原始的状态
ZZ 若文件没有更改则不存储离开,若文件已经更改则存储离开
:w filename 将编辑的数据存储成另一个文件
:r filename 在编辑的数据中读入另一个文件的数据,即将filename这个文件中的内容加到光标所在行的后面
:set nu 显示行号,在每一行的前缀显示改行的行号
:set nonu 取消行号
:set autoindent 自动缩进
{vim .vimrc 编辑这个文件将其写入就可自动显示行号}
:! command 暂时离开vi到命令模式下执行command的显示结果
:n1,n2 w filename 将n1到n2的内容存储成filename文件
4.一般模式
移动光标的方法:
h 或者 方向键 光标向左
j 光标向下
k 光标向上
l 光标向右
也可以“数字+h/j/k/l或者方向键”,就可以实现多次移动
ctrl+t 屏幕向下移动一页
+b 向上
+d 屏幕向下移动半夜
+u 向上
n+空格 : 光标会向右移动这一行的n个字符
数字0:移动到这一行的最前面的字符处
$:移动到当前行的最前面字符处
H:移动到屏幕的最上方的那一行
M:移动到屏幕的中央的那一行
L:移动到屏幕的最下方的一行
G:移动到这个文件的最后一行
nG(n代表数字):移动到该文件的第n行,一般配合set nu使用
gg:移动到该文件的第一行
n+<enter>:光标向下移动n行
5.搜索,替换,删除,复制,粘贴:
输入“/字符或者字符串” 可以搜索到这个字符
“?/字符名”:从光标位置开始,向上寻找该字符名的字符串
:n1,n2s/字符1/字符2/g(n1,n2为数字):在第n1与n2行之间寻找字符1,并将该字符替换为字符2
:1,$s/字符1/字符2/g :在第一行和最后一行之间搜索字符1,并将该字符替换为字符2
:1,$s/字符1/字符2/gc :在第一行和最后一行之间搜索字符1,并将该字符替换为字符2,且在替换前显示提示 符给用户确认是否需要替换
x,X:向后删除一个字符
nx(n代表数字):连续向后删除n个字符
dd:删除光标所在的一整行
ndd:从光标位置开始,删除向下n列
d1G:删除光标所在位置到第一行的所以数据
dG:删除光标所在位置到最后一行的数据
d$:删除光标所在位置到改行的最后一个字符
d0:删除光标所在处到改行最前面的一个字符
yy:复制光标所在的那一行
nyy:复制光标所在的向下n行
y1G:复制光标所在行到第一行的数据
yG:复制光标所在行到最后一行的所以数据
y0:复制光标所在的那个字符到改行行首的所有数据
y$:复制光标所在的那个字符到行尾的所以数据
p P: p为将已复制的数据粘贴到光标的下一行。P为粘贴在光标的上一行
J : 将光标所在的行与下一列的数据结合成同一行
c :重复删除多个数据
u :复原前一个操作
ctrl+r: 重做上一个操作
. :重复前一个动作
编辑模式:
i I :i为在当前光标所在处插入文字,I为在当前所在行的第一个非空格符处开始插入,已存在的文字会向后退
a A :a从当前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入
o O :o在当前光标所在的下一行处插入新的一行;O在当前光标所在处的上一行插入新的一行
r R :r替换光标所在的那一个字符,R会一直替换光标所在的文字,直到按下Esc键为止此外,还可以通过vim同时编辑多个文件。
此外 可以使用sed编辑器实现查找替换:
格式:sed '模式' 对象
如:sed '1,20 s/root/123/g' passwd | less 将1到20行的root换成123
sed 's/file:\/\/\/mnt/cdrom\/http:\/\/192.168.2.100\/pub/'server.repo
也可以这样sed 's&file:///mnt/cdrom&http://192.168.2.100/pub&' server.repo