VI基本使用
基本知识
vi有三种模式
1.命令行模式
2.编辑模式(插入模式INSERT和替换模式REPLACE)
3.末行模式
按:从命令行模式切换到末行模式
按ESC从末行模式或编辑模式切回到命令行模式
按插入命令切换到插入模式
vi打开文件的命令选项
vi temp.txt +100
打开temp.txt 将光标定位到100行
不加行数只写+ 直接定位到文件末尾
vi命令行模式命令
插入
i: 切换到插入模式,从光标前开始插入
I: 切换到插入模式,从行首开始插入
a: 切换到插入模式,从光标后开始插入
A: 切换到插入模式,从行尾开始插入
o: 在光标所在行上面插入一个空行
O: 在光标所在行下面插入一个空行
移动光标
k j h l 分别对应上下左右
0: 移动到行首
$: 移动到行尾
^: 移动到第一个字符
gg: 移动到文件头(go)
G: 移动到文件末尾
数字gg: 移动到相应数字行
数字G: 移动到相应数字行
:数字: 移动到相应数字行
H: 移动到屏幕顶部(Head)
M: 移动到屏幕中间(Middle)
L: 移动到屏幕底部(Low)
(: 切换到上一段落首
): 切换到下一段落首
{: 切换到上一段落首前空行
}: 切换到下一段落首前空行
%: 切换到括号位置,对'()','[]','{}'有效 对'<>'无效
m+字母: 标记,将光标处标记为字母索引(Mark)
'+字母: 将光标切换到字母索引对应的位置
示例->
将光标放在15行后,键入ma,将15行作为a标记
将光标放到35行后,键入mb,将35行作为b标记
此时无论光标在何位置,只需要键入'a就可以将光标定位到15行.键入'b就可以将光标定位到35行.
注意:此命令只能定位到行,不能定位到具体行的某个位置
vi可视模式
可视模式:可以让操作员看到自己选择的内容
v: 进入一般可视模式,选中光标到起点间的所有内容
V: 进入可视行模式,选中光标行到起点行间的所有内容
ctrl+v: 进入可视块模式,选中光标与起点的一块内容
vi撤销与恢复撤销
u: 撤销命令的操作,可以一直撤销到文件最开始打开时的状态(undo)
ctrl+r: 恢复撤销命令(redo)
vi删除(剪切)
vi中的删除操作就是剪切操作
x: 删除光标所在位置的字符,或者选中的字符
d: 配合移动光标命令一起使用,
示例->
dw可以删除后一个单词
d0可以删除光标到行首
d$可以删除光标到行尾
d{可以删除光标到段位
d7G可以删除光标到第七行
d'a删除光标到a标记处
dd: 删除一整行,可以添加数字,
例如使用2dd就可以连续删除之后的两行
D: 删除光标到行尾的所有文本
vi复制粘贴
vi的文本缓存区和剪切板不是共用的,所有不能使用ctrl+c
复制使用p
粘贴.只有切换到编辑模式中才能粘贴剪切板的内容
y: 复制,需要配合移动光标命令一起使用
示例->
yw复制后一个单词
d0可以复制光标到行首
d$可以复制光标到行尾
d{可以复制光标到段位
d7G可以复制光标到第七行
d'a复制光标到a标记处
yy:复制一行,可添加数字
例如使用2yy就复制了光标往下两行内容
p:粘贴,可添加数字
例如5p就将连续粘贴五次文本缓存区的内容
vi替换
r:替换光标所在字符
例如rH就将光标所在处替换成H字母
R:进入替换模式,相当于windows下的insert模式
缩排与重复执行
>>:行前增加缩进
<<:行前减少缩进
在可视模式下使用一个'>'或'<'就可以
.:重复执行,重复执行上一次命令
查找命令
/:从光标处往下寻找内容
例如 /test 就往下寻找与test匹配的文字
?:从光标处往上寻找内容
*:向上寻找光标所在单词
#:向下寻找光标所在单词
在查找到内容后使用如下命令可以切换到其他查找项
n:查找下一个
N:查找上一个
vi查找替换
vi查找替换只能在末行模式中使用,有以下固定格式
全局替换格式:
%s///g
可视范围替换格式:
s///g
确认替换格式
s///gc
末行模式下
%s/旧单词/新单词/g:全局替换文本
在可视范围内替换
使用v选中文本区域后使用
s/旧单词/新单词/g就可以在选中范围内替换了
%s/旧单词/新单词/gc将出现如下选项
y:同意
n:拒绝
a:替换所有
l:替换最后一个
^E:向下滚屏
^Y:向上滚屏
q:退出替换
数字与命令联用
如果要输入100个星号.可以执行以下命令
1.在命令行模式下输入100
2.输入i
进入编辑模式
3.输入*
插入星号
4:点击ESC
退回命令模式
这样将重复执行100次2和3