Vim 的六种基本模式
- 普通模式
- 插入模式
- 命令行模式
- 可视模式
- 选择模式
- Ex 模式
其中常用的是 普通模式
插入模式
和 命令行模式
。
三种模式切换
vim 启动进入普通模式,处于插入模式或者命令行模式时只需要按 Esc 或者 Ctrl + [ 即可进入普通模式,普通模式中按i
或者a
都可以进入插入模式。普通模式按:
可以进入命令行模式,命令行输入 wq 回车保存退出 vim
游标移动
在普通模式中进行游标移动,按h
,j
,k
,l
进行游标移动
按键 | 说明 |
---|---|
h | 左 |
l | 右(小写) |
j | 下 |
k | 上 |
插入模式
进入插入模式
在普通模式下使用下面的键进入插入模式,并且可以从相应的位置开始输入
命令 | 说明 |
---|---|
i | 从当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换从光标所在位置后到一个单词结尾的字符 |
C | 修改当前行上光标后面的部分. 进入编辑状态 |
cc OR S | 修改当前行. 进入编辑状态 |
删除文本
普通模式删除文本
命令 | 说明 |
---|---|
x | 删除游标所在的字符 |
X | 删除游标所在的前一个字符 |
Delete | 同 x |
dd | 删除整行 |
dw | 删除一个单词 |
d$ OR D | 删除至行位 |
重复上次操作
在普通模式下 .
(小数点)表示重复上次操作
执行指定次数的命令
在普通模式下,输入N<command>
,N
表示 command 的执行次数,比如 2dd
,表示执行 dd
两次。
游标的快速跳转
行间跳转
命令 | 说明 |
---|---|
nG(n Shift+g) | 游标移动到第n 行,如果默认没有显示行号,先执行:set nu 显示行号 |
gg | 游标移动到第一行 |
G(shift+g) | 到最后一行 |
行内跳转
普通模式下使用下列命令在行内按照单词为单位进行跳转
命令 | 说明 |
---|---|
w | 到下一个单词的开头 |
e | 到当前单词的结尾 |
b | 到前一个单词的开头 |
ge | 到前一个单词的结尾 |
0 OR ^ | 到行头 |
$ | 到行尾 |
f[字母] | 向后搜索 字母 并跳转到第一个匹配的位置 |
F[字母] | 向前搜索 字母 并跳转到第一个匹配的位置 |
t[字母] | 向后搜索 字母 并跳转到第一个匹配的位置之前的一个字母** |
T[字母] | 向前搜索 字母 并跳转到第一个匹配的位置之前的一个字母** |
复制粘贴剪切
复制及粘贴文本
在普通模式下使用 y
复制
命令 | 说明 |
---|---|
y | 复制当前光标的文本 |
yy | 复制游标所在的整行 |
y^ OR y0 | 复制至行首,不包含光标所在的字符 |
y$ | 复制至行尾,含光标所在处字符 |
yw | 复制一个单词 |
y[n]w | 复制 n 个单词 |
yG | 复制至文本末 |
y1G | 复制至文本开头 |
使用p
粘贴
命令 | 说明 |
---|---|
p | 粘贴至光标后 |
P | 粘贴至光标前 |
剪切及粘贴
其实 dd
就是剪切,每次剪切后可以用 p
来粘贴,所以 ddp
可以快速实现上下行交换
查找和替换
替换和撤销命令
普通模式
命令 | 说明 |
---|---|
r<待替换的字母> | 将游标所在的字母替换为指定的字母 |
R | 连续替换,直到按下Esc
|
cc | 替换整行,及删除游标所在的行,并进入插入模式 |
cw | 替换一个单词,即删除一个单词,并进入插入模式 |
C | 替换游标以后至行末 |
~ | 反转游标所在字母的大小写 |
u[n] | 撤销一次或者 n 次操作 |
U | 撤销当前行的所有修改 |
Ctrl+r | redo,撤销撤销操作 |
快速缩进
使用命令进行快速调整缩进操作
缩进操作均在普通模式下有效
命令 | 说明 |
---|---|
>> |
将整行向右缩进 |
<< | 将整行向左回退 |
命令行下对shiftwidth
值进行设置可以控制缩进和回退的字符数
shiftwidth 命令
获取目前的设定值
:set shiftwidth?
设置缩进值为10个字符
:set shiftwidth=10
调整文本位置
命令行模式下输入:ce
命令使文本居中
命令 | 说明 |
---|---|
:ce | 使本行内容居中 |
:ri | 使本行内容靠右 |
:le | 使本行内容靠左 |
查找
快速查找
普通模式下输入/
然后输入要查找的字符串,按回车后就会进行查找。
?
与/
功能相同,只不过?
是向上而/
是向下查找
进入查找后输入n
和 N
可以继续查找
n
表示继续查找,N
表示反向查找
高级查找
命令 | 说明 |
---|---|
* | 向下查找游标所在处的单词 |
# | 向上查找游标所在处的单词 |
g* | 向下查找游标所在处的单词,部分符合即可 |
g# | 向上查找游标所在处的单词,部分符合即可 |
n
和N
仍可使用