一、vi/vim编辑器介绍
vi 是 visual interface 的简称,是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辩别语法的正确性,极大方便了程序的设计和编辑性。
安装vim
yum -y install vim
1.1 工作模式
vi编辑器有3种模式:命令模式、输入模式、底行模式(也叫底线命令模式)。
-
命令模式:使用 vi 编辑器时,默认处在命令模式。该模式下,所敲的按键都被编辑器理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。
-
输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当完成修改输入等操作需要保存文件,需要先返回命令模式,在进入末行模式保存。
-
底行模式:在命令模式下输入英文的冒号 :即可进入底行模式,通常用于文件的保存、退出。
vi三种模式的关系
命令模式相当于一个中转站,即无论当前处于何种模式,都可通过按 Esc 键进入命令模式中,再根据所需继续完成后续操作。
1.2 编辑文件
命令格式:
vi 文件路径 vim 文件路径
-
如果文件路径表示的文件
不存在
,那么此命令会用于编辑新文件
-
如果文件路径表示的文件
存在
,那么此命令用于编辑已有文件
1.3 保存和退出
q quit
底行命令 | 作用 |
---|---|
:w | 保存(只是对当前文件进行保存操作,并没有退出这个文件) |
:q | 退出,注意文件必须先保存,然后才能退出 |
:wq | 保存并退出 |
:q! | 强制退出(此时文件未保存) |
已有文件
一般情况下,编辑完文件后,使用:wq
保存并退出文
新文件
如果文件已经有文件名,在末行模式直接输入w保存,如果没有文件名,输入w 文件名进行保存。
\
另存为
那么在vi中也可以另存为,就是在保存完以后,再使用w 另存为文件名。
1.4 光标的移动
光标方向的移动,除了可以使用方向键,还可以使用以下命令 :
向上移动光标:k
向左移动光标:h
向右移动光标:l
向下移动光标:j
1.5 翻页命令kk
Ctrl+F向前翻整页
Ctrl+B向后翻整页
Ctrl+U向前翻半页
Ctrl+D向后翻半页
1.6 行内快数跳转
^移动到本行行首
$移动到本行行尾
1.7 显示行号和取消行号(底行模式使用)
set nu显示行号
set nonu取消行号
1.8 在命令模式下,使用以下命令可以快速的在行间跳转
gg跳转到文件首行
G跳转到尾行
G跳转到文件的#行
二、编辑操作
2.1 进入输入模式命令
i 插入命令
a 附加命令
o 打开命令
c 修改命令
r 取代命令
s 替换命令
Esc 退出命令
2.2 输入模式的操作
Home光标到行首
End 光标到行尾
Page Up和Page Down上下翻页
Delect删除光标位置的字符
2.3 删除操作(命令模式使用)
x删除光标处的单个字符
dd删除光标所在行
dw删除当前字符到单词尾包括空格的所有字符
x例如3x删除光标处向右的三个字符
dd例如3dd从当前行开始向下删除三行文本
2.4 撤销操作
u命令取消最近一次的操作,可以使用多次来恢复原有的操作
U取消所有操作
Ctrl+R可以恢复对使用u命令的操作
2.5 复制操作
yy命令复制当前整行的内容到vi缓冲区
yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
yy例如:5yy就是复制5行
yw例如:2yw就是复制两个单词
如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
2.6 搜索和替换
在vim/gvim的命令模式,按“/”或者“?”后面跟所要搜索的内容,然后按回车开启搜索:
/str ?str
进入搜索模式后,按“n”表示寻找下一个,按“N”(shift + n)表示寻找上一个。
2.6.1 模糊搜索
/\<world\>
2.6.2 忽略大小写的搜索
缺省条件下vim的搜索是case-sensitive(大小敏感的) ,可以用属性“\c”来告诉vim在搜索时忽略大小写
/\<pattern\>\c /ll\c
2.6.3 高亮搜索结果
:set hlsearch :set nohlsearch
2.6.4 替换
「r」:替换光标所在处的字符。 ,按一下"r"然后输入要即可.
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
恢复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。
按多次"u"可以执行多次恢复.就相当于"CTRL +Z"的操作.
在命令模式下使用“s/原字符/新字符/g” 代表当前行所有
如果想全局替换,s变为%s
:%s/原字符/新字符/g
:%s/ll/xx/g
2.7 异常退出恢复文件
异常退出:指的是在编辑文件之后没有正常的保存退出,而是通过直接关闭终端或者强制退出的方式来退出文件。
vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,在下次编辑时会显示下图的效果:
-
O只读打开,不改变文件内容
-
E继续编辑文件,不恢复.swp文件保存的内容
-
R将恢复上次编辑以后未保存文件内容
-
Q退出vi
-
D删除.swp文件
-
或者使用vi -r 文件名来恢复未保存的内容
方式二
只需要将交换文件删除即可正常编辑文件了 (在上述的提示界面下按 D 键或通过 rm 指定删除交换文件)
rm -rf 文件名