方向行内移动
命令 | 功能 |
---|---|
j | 光标向下一行 |
k | 光标向上一行 |
h | 光标向左 |
l | 光标向右 |
行内移动
命令 | 功能 |
---|---|
w | 光标向后移动一个单词 |
b | 光标向前移动一个单词 |
0 | 行首 |
^ | 行首,第一个不是空白字符的位置 |
$ | 行尾 |
行数移动
命令 | 功能 |
---|---|
gg | 文件顶部 |
G | 文件尾部 |
数字gg | 移动到数字对应的行数 |
数字G | 移动到数字对应的行数 |
:数字 | 移动到数字对应的行数 |
屏幕移动
命令 | 功能 |
---|---|
Ctrl + b | 向上翻页 |
Ctrl + f | 向下翻页 |
H | 屏幕顶部 |
M | 屏幕中间 |
L | 屏幕底部 |
段落移动
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
行号显示
代码 | 描述 |
---|---|
:set nu | 显示行号 |
:set nonu | 取消行号 |
括号切换
在程序世界中, (),[] , {} 使用的频率很高
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
标记
在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
此时先使用 m 做一个标记,这样可以在需要时更快地跳转回来
标记可以是 a~z 或 A~Z
如果添加的标记行被删除,标记同时被删除
如果在其他行添加了相同的标记,之前的标记就会被替换掉
命令 | 英文 |
---|---|
mx | 添加标记x,x是 a~z 或 A~Z之间的任意字符 |
‘x | 直接定位到x标记的位置 |
选中文本(可视模式)
命令 | 模式 | 功能】 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向上选择文本 |
可视模式下,可以和移动命令连用,例如: ggVG 能够选中所有内容
撤销和回复撤销
命令 | 功能 |
---|---|
u | 撤销上次命令 (向上) |
Ctrl + r | 回复撤销的命令(向下) |
删除文本
命令 | 功能 |
---|---|
x | 删除光标所在字符或文字 |
d(移动命令) | 删除移动命令对应的内容 |
dd | 删除光标所在行,可以 ndd 向下多行删除 |
D | 删除至行尾 |
如果使用可视模式已经选中了一段文本,无论使用 d 还是 x 都能进行删除
dw # 从光标位置删除到单词末尾
d0 # 从光标位置删除到一行的起始位置
d} # 从光标位置删除到段落尾部
d代码行G # 从光标位置删除到指定的代码行
d's # 从光标位置删除到标记x之间的所有代码
复制粘贴
vi 会提供一个 被复制文本的缓冲区
复制 命令会将选中的文字保存在缓冲区
删除 命令会将删除的文字保存在缓冲区
在需要的位置可以使用粘贴命令将缓冲区的内容插入到光标所在的位置
命令 | 功能 |
---|---|
y(移动命令) | 复制 |
yy | 复制一行,nyy可以复制多行 |
p | 粘贴到光标位置之后 |
P | 粘贴到光标位置之前 |
注意:vi的缓冲区和系统的剪切板不是同一个
在其它软件中使用Ctrl + c 复制的内容不能使用 p 命令在 vi 中粘贴
替换
命令 | 功能 | 工作模式 |
---|---|---|
r | 替换光标所在字符 | 命令模式 |
R | 替换光标行光标后的字符 | 替换模式 |
:n1,n2 s/旧文本/新文本/g
替换n1到n2之间的所有文本
替换模式 的作用就是不用进入编辑模式,对文件进行轻微级的改动
缩排与重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 想左增加缩进 |
. | 重复上次命令 |
查找
命令 | 功能 |
---|---|
/str | 查找str |
查找到指定的内容后,使用 Next 查找下一个出现的位置:
n :查找下一个
N :查找上一个
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
查找和替换
需要在 末行模式 下执行
全局替换:
格式: %s/旧文本/新文本/g
可视区域替换:
先选中要替换文字的范围
命令格式:s/旧文本/新文本/g
确认替换:
将末尾的 g 改为 gc
格式: %s/旧文本/新文本/gc
y - yes 替换
n - no 不替换
a - all 替换全部
q - quit 退出