1 工作模式
vi有两种工作模式
- 命令模式(按ESC进入),这也是vi的默认工作模式
- 插入模式(按i进入)
在命令模式下可以有三类操作:
- 搜索操作,输入(
/
或者?
) - 常规操作,输入
:
命令执行之后过后会被放入缓冲区,可通过
.
重复上次命令
vi命令的常规形式
(command)(number)(text object)
在没有command时,就是光标移动命令
快捷键命令除外如cc
dd
等
2 文件操作命令
- 打开/创建文件
vi FILE
- 保存
:w
- 另存为
:w path/filename
- 退出
:q
- 强制退出
:q!
- 保存并退出
:wq
或者ZZ
- 运行命令
:!命令
,如查看磁盘剩余空间:!df -h
- 挂起当前任务并切换至后台运行
CTRL+Z
- 唤醒挂起的后台任务
fg
,如果当前有多个后台任务,可使用fg %job号
,job号可通过命令jobs
查看,如:
root$ jobs
root$ vi ddd
[1]+ Stopped vi ddd
root$ jobs
[1]+ Stopped vi ddd
root$ fg %1
3 光标移动命令
光标普通移动
- 移动到目标行
nG
,如移动到到第2行2G
- 移动到首行
1G
- 移动到末行
G
- 到行首
0
- 到行尾
$
- 以空格为分割,左移
B
- 以空格为分割,右移
W
- 以word为单位,左移
b
,左移N个词则是Nb
,如2b
- 以word为单位,右移
w
,右移N个词则是Nw
,如2w
-以word为单位,右移至词尾e
- 左下上右
hjkl
,同样可以一次移动多个单位 ,如向下移动2行2j
按屏移动
- 前进一屏
CTRL+F
- 后退一屏
CTRL+B
- 前进半屏
CTRL+D
- 后退半屏
CTRL+U
以光标为中心换屏
- 光标所在行至屏首
z+Enter
- 光标所在行至屏中
z+.
- 光标所在行至屏底
z+-
屏内移动光标
- 光标移至屏内首行
H
- 光标移至屏内中央
M
- 光标移至屏内尾行
L
- 光标移至屏内首行起第n行
nH
4 编辑命令
4.1 替换
替换光标所在行 cc
替换光标所在行 S
从光标至行首c0
从光标至行尾 c$
或者C
从光标至左侧两个词 c2b
从光标至词首 cb
从光标至词尾 cw
替换单个字母 r
,键入一个新字母后vi自动进入命令模式,无需键入ESC
替换单个字母 R
,可键入多个新字母
替换单个字母 s
,可键入多个新字母
改变大小写~
替换之后,可在光标位置输入新内容,若无内容输入,需键入ESC
退出替换模式
4.2 删除
删除光标所在行 dd
,删除两行2dd
从光标至行首d0
从光标至行尾 d$
或者D
从光标至词尾 dw
从光标至词首 db
从光标至左侧两个词 d2b
删除光标后的一个字符x
,删除3个字符3x
删除光标前的一个字符X
删除后的数据会被放入缓冲区,可以用来粘贴至其他位置
4.3 回退
回退到上一步u
,回退3步3u
4.3 粘贴
在光标后粘贴缓冲区的内容p
在光标前粘贴缓冲区的内容P
交换两个字符的位置xp
4.4 常用进入插入模式的命令
在行尾插入A
在行首插入I
在光标所在行下方插入空行并移动光标至新行o
,进入插入模式
在光标所在行上方插入空行并移动光标至新行O
,进入插入模式
删除单个字符并进入插入模式s
删除一行并进入插入模式S
进入覆盖模式,旧字符将被新字符覆盖R
插入时的重复
插入10个* 10i*ESC
插入10组*_ 10i*_ESC
4.5 复制
复制光标所在行 yy
,复制两行2yy
从光标至左侧两个词 y2b
从光标至行首y0
从光标至词尾 yw
从光标至词尾 yb
从光标至行尾 y$
或者Y
复制后的数据会被放入缓冲区,可以用来粘贴至其他位置
4.6 合并行
合并光标下的行至当前行J
4.7 查找
/PATTERN
正向查找PATTERN
?PATTERN
反向查找PATTERN
n
同继续查找
N
反向查找
fx
行内查找x
;
同方向继续行内查找
,
反方向继续行内查找
5 格式命令
- 展示行号
:set nu
网友评论