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