之前做项目时使用到了vim,但中间一些指令忘记了,所以根据网上视频和资料对vim的基础用法进行了总结。
使用hjkl来移动你的光标
h
表示 左
,j
表示 下
,k
表示 上
,l
表示 右
假如想向左移动10格,可以先输入10,然后按 h
模式
基本模式:
- 普通模式
- 插入模式
- 可视模式
- 选择模式
- 命令行模式
- Ex模式
派生模式:
- 操作符等待模式
- 插入普通模式
- 插入可视模式
- 插入选择模式
- 替换模式
敲击按键 | 含义 |
---|---|
i | 在光标的前边进入插入模式 |
I | 在光标所在行的行首进入插入模式 |
a | 在光标的后边进入插入模式 |
A | 在光标所在行的行尾进入插入模式 |
o | 在光标所在行的下方插入空行并进入插入模式 |
O | 在光标所在行的上方插入空行并进入插入模式 |
s | 删除光标指定的字符并进入插入模式 |
S | 将光标所在行清除并进入插入模式(清除不改变行的位置) |
motion 表示操作范围的指令,具体可有以下几种:
按键 | 含义 |
---|---|
0 | 将光标定位到行首的位置 |
^ | 同上 |
$ | 将光标定位到行尾的位置 |
b | 将光标定位到光标所在单词的起始处 |
e | 将光标定位到光标所在单词的结尾处 |
w | 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词) |
gg | 将光标定位到文件的开头 |
G | 将光标定位到文件的末尾 |
忽略修改并退出 :q!
,其中 :q
表示退出, :q!
表示忽略修改并退出
保存修改并退出 :wq
和 按住 Shift键后按两次 Z 键
删除命令
-
在普通模式下,删除单一字符可以用
x
命令 -
删除更多字符可以使用
d
命令 -
更多删除命令
按键 | 含义 |
---|---|
d0 | 删除光标从当前位置(不包含)到该行行首的所有字符 |
d^ | 同上 |
d$ | 删除从光标当前位置(包含)到该行行尾的所有字符 |
db | 删除从光标当前位置(不包含)到单词起始处的所有字符 |
de | 删除从光标当前位置(包含)到单词结尾处的所有字符 |
dw | 删除从光标当前位置(包含)到下个单词起始处的所有字符 |
dh | 删除光标前边一个字符 |
dl | 删除光标指定的字符 |
dj | 删除光标所在行以及下一行的所有字符 |
dk | 删除光标所在行以及上一行的所有字符 |
dd | 删除光标所在行的字符 |
dgg | 删除光标所在行到文件开头的所有字符 |
dG | 删除光标所在行到文件末尾的所有字符 |
数字的奥义
数字 + motion = 重复多个motion
d + 数字 + motion = 删除多个motion范围
后悔药
u
表示撤销最后一次修改U
表示撤销对整行的修改Ctrl + r
快捷键可以恢复撤销的内容
注意:
在VIM下使用删除功能,并不会直接将你的东西删掉,而是放到VIM的寄存器中。
粘贴命令
使用 p
命令可以将最后一次删除的内容粘贴到光标之后。(大写的 P
则是粘贴到光标之前)
注意:
- 如果你需要粘贴的是整行为单位,那么
p
命令将在光标的下一行开始粘贴; - 如果你拷贝的是非整行的局部字符串,那么
p
命令将在光标后开始粘贴。
拷贝命令
VIM用 y
命令实现拷贝: y [数字] motion
替换命令
r
命令用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下r
键,然后输入新的字符。- 在键入
r
命令前输入数字,表示从光标处开始,将多个字符统一替换为新字符。
替换模式
R
命令让你一步到位进入替换模式,如果按回退就可以恢复之前的替换
修改命令
- 修改跟替换是不一样的!
- 修改会进入插入模式,替换不会进入插入模式!
- VIM用
c
命令实现修改:c [数字] motion
按键 | 含义 |
---|---|
c0 | 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式 |
c^ | 同上 |
c$ | 删除从光标当前位置(包含)到改行行尾的所有字符,并进入插入模式 |
cb | 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式 |
ce | 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式 |
cw | 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式 |
ch | 删除光标前边一个字符,并进入插入模式 |
cl | 删除光标指定的字符,并进入插入模式 |
cj | 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式 |
ck | 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式 |
cc | 删除光标所在行的字符,并进入插入模式 |
修改 = 删除 + 进入插入模式
文件信息
Ctrl + g
查看文件信息
跳转
行号 + G
:行号
定位括号
按下 %
键,快速帮你找到另一半括号
缩进
>>
表示缩进
<<
表示反缩进
搜索命令
查找是从按下 /
那一刻开始的…
/目标 | ?目标 | |
---|---|---|
搜索方向 | 从光标开始向后 | 从光标开始向前 |
n | 向后搜索下一个 | 向前搜索下一个 |
N | 向前搜索下一个 | 向后搜索下一个 |
如果搜索完了,按下esc后进入普通模式后仍然搜索的内容是高亮的,可以输入:nohl
来解决
注意:有十个特殊字符不能直接用 /
进行搜索,分别是 .
*
[
]
^
%
/
?
~
$
,如果需要搜索,则需要加入 \
,例如/\/
替换命令
:s/old/new
表示将光标所在行的第一个old替换为new:s/old/new/g
表示将光标所在行的所有old替换为new:%s/old/new/g
表示将整个文件中所有的old替换为new:%s/old/new/gc
同上,但是会在每次替换之前先请示:5,13s/old/new/g
表示替换第5行到第13行中所有的old为new
如果想把搜索到的oo替换为xx,则可是输入 :s/oo/xx
如果光标在某一行,输入 :s/x/o
,则会将该行的第一个x替换为o
如果光标在某一行,输入 :s/x/o/g
,则可以将该行所有的x替换为o
如果想把文档中的所有x替换为o,则可以输入:%s/x/o/g
如果输入 :%s/x/o/gc
,则会咨询你是否将整个文档中的所有x替换为o
如果想把第4行到第12行之间的x替换为o,则可以输入:4,12s/x/0/g
执行shell命令
用法: :!
如果想查看根目录下有哪些文件,可以输入 :!ls /
文件另存为
用法::w 文件名
局部内容另存为:1. 按下 v
进入可视模式;2. :w 文件名
可以使用 :w!
文件名来进行覆盖操作
合并文件
用法::r 文件名
可以在A文件中使用 :r B
将B文件中的内容合并到A文件中
打开多个文件
用法:
-o
垂直并排
-O
水平并排
如果想要A文件和B文件垂直并排,则可以输入 vi -o A B
如果想要A文件和B文件水平并排,则可以输入 vi -O A B
- 用
Ctrl + w + w
将光标切换到下一个文件 - 对于垂直并排的文件:使用
Ctrl + w + 上、下方向
,表示上、下切换文件; - 对于水平并排的文件:使用
Ctrl + w + 左、右方向
,表示左、右切换文件。
使用 :qa
可以不修改退出所有文件
以上即为常见的vim用法。
内容参考小甲鱼 《vim快速入门》。