基本模式切换
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
ESC | C-[ | C-c | 进入命令模式 |
i | 在光标前进入插入模式 | I | 在本行行首进入插入模式 |
a | 在光标后进入插入模式 | A | 在本行行尾进入插入模式 |
o | 在下一行插入新行,并进入插入模式 | O | 在上一行插入新行,并进入插入模式 |
: | 执行ex命令 | S-q | 进入ex模式 |
v | V |
光标移动
基本移动
向左 | 向下 | 向上 | 向右 |
---|---|---|---|
h | j | k | l |
文本间移动
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
b | 上一个单词的开头 | w | 下一个单词的开头 |
B | 忽略标点的b | W | 忽略标点的w |
e | 下一个单词的结尾 | E | 忽略标点的e |
$ | 移动到行尾 | 0 | 移动到行首 |
^ | 本行第一个非空字符处 | n\’竖线’ | 移动到本行第n列 |
( | 移动到上一个句子的开头 | ) | 移动到下一个句子的开头 |
{ | 移动到上一段的开头 | } | 移动到下一段的开头 |
[[ | 移动到上一节的开头 | ]] | 移动到下一节的开头 |
屏幕移动
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
C-f | 向下滚动一屏 | C-b | 向上滚动一屏 |
C-d | 向下滚动半屏 | C-u | 向上滚动半屏 |
z ENTER | 将当前行置在屏幕顶端 | H | 移动到当前屏幕顶端的行 |
z . | 将当前行置在屏幕中心 | M | 移动到当前屏幕中心的行 |
z- | 将当前行置在屏幕低端 | L | 移动到当前屏幕底端的行 |
其他移动
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
gg | 移动到文本首行 | G | 移动到文本尾行 |
BACKSPACE | 移动到前一个字符处,可跨行 | SPACE | 移动到后一个字符处,可跨行 |
- | 移动到上一行第一个非空字符处 | + | 移动到下一行第一个非空字符处 |
文本编辑
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
x | 往后删一个字符 | X | 往前删一个字符 |
d+光标移动 | 删除文本 | dd | 删除本行 |
c+光标移动 | 更改文本 | cc | 更改本行 |
y+光标移动 | 复制文本 | yy | 复制本行 |
s | 删除当前字符后更改文本 | S | 删除本行后更改文本 |
r | 替换字符 | R | 进入替换模式 |
p | 向下放置缓冲区文本 | P | 向上放置缓冲区文本 |
u | 撤销 | U | 将当前行恢复到原状态 |
~ | 当前字符切换大小写 | J | 合并下一行 |
搜素
按键 | 作用 | 按键 | 作用 |
---|---|---|---|
/pattern | 全文向后搜素pattern | ?pattern | 全文向前搜素pattern |
n | 往同一方向进行全文搜素 | N | 往反方向进行全文搜素 |
fx | 搜素当前行中下一个x出现的地方 | Fx | 搜素当前行中上一个x出现的地方 |
tx | 搜素当前行中下一个x出现的前一个字符处 | Tx | 搜素当前行中上一个x出现的后一个字符处 |
; | 往同一方向进行当前行搜素 | , | 往反方向进行当前行搜素 |
ex命令
基本命令
命令 | 作用 |
---|---|
a,b p | 显示a~b行 |
k s /pattern1/pattern2 | 将第k行的pattern1替换成pattern2 |
a,b d/delete | 删除a~b行 |
a,b m/move c | 将a~b行移至c行后 |
a,b co/copy c | 复制a~b行至c行后 |
= | 显示文件总行数 |
相关
行寻址 | 作用 | 通用 | 作用 |
---|---|---|---|
. | 表示当前行 | “[a-z0-9] | 指向一个寄存器 |
$ | 表示最后一行 | 变量 | 表示上一个打开的文件名 |
% | 表示每一行 | %变量 | 表示当前文件名 |
vi [option] [filename]
命令 | 作用 |
---|---|
vi +n file | 在第n行打开文件 |
vi + file | 在最后一行打开文件 |
vi +/pattern file | 在pattern第一次出现的地方打开文件 |
vi -R file | 以只读模式打开文件 |
vi -r file | 恢复编辑缓冲区 |
其他命令
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
w | 写入文件 | q | 离开编辑器 |
wq | 写入并退出 | x | 写入并退出,只有修改才写入 |
ar/args | 列出文件列表 | n | 移动到下一个文件 |
rew/rewind | 将当前文件复位成第一个文件 | last | 将当前文件复位成最后一个文件 |
e file | 切换到文件file | e ! | 放弃编辑,并恢复到最初 |
C-^ | 在当前文件和上一个文件间切换 | r/read file | 将文件内容插入到当前行下 |
g/pattern | 全局搜索pattern | \’竖线‘ | 命令连接符 |
多窗口编辑
启动多窗口
打开窗口
ex命令 | vim命令 | 作用 |
---|---|---|
[n]split [++opt] [+cmd] [file] | C-w s/C-w S | 水平分割当前窗口,并打开或创建一个文件 |
[n]new [++opt] [+cmd] | C-w n/C-w C-n | 类似split,但打开一个空白文本 |
[n]sview [++opt] [+cmd] [file] | 只读的split | |
[n]sfind [++opt] [+cmd] [file] | 类似split,但只打开已存在的文件 | |
[n]vsplit [++opt] [+cmd] [file] | C-w v/C-w C-V | 垂直的split |
[n]vnew [++opt] [+cmd] | C-w n | 垂直的new |
窗口间移动
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
C-w j/C-w C-j | 移动到当前窗口下面的窗口 | C-w k/C-w C-k | 移动到当前窗口上面的窗口 |
C-w h/C-w C-h | 移动到当前窗口左面的窗口 | C-w l/C-w C-l | 移动到当前窗口右面的窗口 |
C-w t/C-w C-t | 移动到最左上角的窗口 | C-w b/C-w C-b | 移动到最右下角的窗口 |
C-w w/C-w C-w | 移动到下一个窗口 | C-w W | 移动到上一个窗口 |
C-w p/C-w C-p | 移动到前一个窗口 |
移动窗口位置
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
C-w J | 将窗口移动到最底端,并使用全部宽度 | C-w K | 将窗口移动到最顶端,并使用全部宽度 |
C-w H | 将窗口移动到最左端,并使用全部高度 | C-w L | 将窗口移动到最右端,并使用全部高度 |
C-w t/C-w C-t | 移动到最左上角的窗口 | C-w b/C-w C-b | 移动到最右下角的窗口 |
C-w T | 移动窗口到新分页中 | C-w x/C-w C-x | 与下一个窗口交换位置 |
C-w r/C-w C-r | 向右或下轮换窗口 | C-w R | 向左或上轮换窗口 |