1. 汇总操作
退出VIM
通过命令行模式退出
命令 |
说明 |
命令 |
说明 |
:q |
退出 |
:q! |
强制退出,不保存 |
:wq |
保存并退出 |
:wq! |
强制保存并退出 |
:w <文件路径> |
另存为 |
:saveas 文件路径 |
另存为 |
:x |
保存并退出 |
shift + zz |
保存并退出 |
普通模式进入命令行模式
命令 |
说明 |
命令 |
说明 |
i |
在当前光标处进行编辑 |
I |
在行首插入 |
a |
在光标后插入编辑 |
A |
在行末插入 |
o |
在当前行后插入一个新行 |
O |
在当前行前插入一个新行 |
2. 普通模式
移动游标
按键 |
说明 |
按键 |
说明 |
h |
左 |
l |
右(小写 L) |
j |
下 |
k |
上 |
b |
移动到上一个单词 |
w |
移动到下一个单词 |
C-d |
向下移动半屏(down) |
C-u |
向上移动半屏(up) |
C-f |
向下翻页(forward) |
C-b |
向上翻页(back) |
删除内容
命令 |
说明 |
命令 |
说明 |
x |
删除游标所在的字符 |
X |
删除游标所在前一个字符 |
Delete |
同x |
dd |
删除整行 |
d$ 或D |
删除至行尾 |
d^ |
删除至行首 |
dG |
删除到文档结尾处 |
d1G |
删至文档首部 |
dw 或daw |
删除一个单词(不适用中文)(delete a word) |
:%d |
删除所有 |
重复命令
命令 |
说明 |
命令 |
说明 |
. |
重复上一次操作 |
10x |
删除10个连续字符 |
3dd |
删除3行文本 |
dnw |
删除n个单词 |
快速跳转
命令 |
说明 |
命令 |
说明 |
gg |
游标移动到到第一行 |
G (Shift+g) |
到最后一行 |
Ctrl + o |
回到上次光标所在位置 |
nG (n Shift+g) |
游标移动到第 n 行 |
行内跳转
命令 |
说明 |
命令 |
说明 |
e |
到当前单词的结尾 |
w |
到下一个单词的开头 |
b |
到前一个单词的开头 |
ge |
到前一个单词的结尾 |
0 或^ |
到行头 |
$ |
到行尾 |
f<字母> |
向后搜索<字母>并跳转到第一个匹配的位置(非常实用) |
F<字母> |
向前搜索<字母>并跳转到第一个匹配的位置 |
t<字母> |
向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用) |
T<字母> |
向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用) |
复制和粘贴
命令 |
说明 |
命令 |
说明 |
y |
复制 |
dd |
剪切 |
yy |
复制整行 |
3yy |
复制三行 |
y^ 或y0 |
复制至行首,不含光标字符 |
y$ |
复制至行未,含光标所在 |
yw |
复制一个单词 |
y2w |
复制两个单词 |
yG |
复制至文本末 |
y1G |
复制至文本开头 |
p (小写) |
粘贴至光标后 |
P (大写) |
粘贴至光标前 |
替换
命令 |
说明 |
命令 |
说明 |
r +<待替换字母> |
将游标所在字母替换为指定字母 |
R |
连续替换,直到按下Esc |
cc |
替换整行,即删除游标所在行,并进入插入模式 |
cw |
替换一个单词,即删除一个单词,并进入插入模式 |
C (大写) |
替换游标以后至行末 |
~ |
反转游标所在字母大小写 |
u {n} |
撤销一次或 n 次操作(undo) |
U (大写) |
撤销当前行的所有修改 |
Ctrl+r |
redo,即撤销 undo 的操作 |
:%!sort |
对内容排序(将一行内容看成一个字符串,然后按字符串大小进行排序) |
命令底行模式替换公式:
:起始位置,终止位置s/被替换对象/替换内容/参数
起始位置:默认为1,.
代表当前位置
终止位置:默认为$
,可以使用具体的行号,+2
表示向后两行
参数:g
全局匹配,i
忽略大小写,c
替换时提示,e
忽略错误
示例::s/foo/bar/g
全局将foo替换为bar,:5,12s/foo/bar/g
替换5到12行,:.,+2s/foo/bar/g
替换当前位置到后两行,:'<,'>s/foo/bar/g
可视模式下替换选中区域
快速缩进
命令 |
说明 |
命令 |
说明 |
>> |
向右缩进 |
<< |
向左回退 |
快速查找
命令 |
说明 |
命令 |
说明 |
/ |
向下查找 |
? |
向上查找 |
\* |
查找游标所在处的单词,向下查找 |
\# |
查找游标所在处的单词,向上查找 |
g\* |
查找游标所在处的单词,向下查找,部分符合即可 |
g\# |
查找游标所在处的单词,向上查找,部分符合即可 |
备注:n为向下找,N为向上找,查找内容支持正则表达式,但是表示次数的符号前需要使用\
,如:/\d\{2,3}
,:/a\+
3. 命令行模式
命令 |
说明 |
:ce |
(center)文本居中 |
:ri |
(right)文本有对齐 |
:le |
(left)文本左对齐 |
:noh |
退出搜索 |
:set hls |
设置搜索高亮 |
:set shiftwidth=n |
设置缩进和回退字符数 |
:set nu |
显示行号 |
:set autoindent(ai) |
设置自动缩进 |
:set autowrite(aw) |
设置自动存档 |
:set background=dark/light |
设置背景风格 |
:set backup(bk) |
设置自动备份 |
:set cindent(cin) |
设置C语言风格缩进 |
:set 或:se |
显示所有修改过的配置 |
:set all |
显示所有设定值 |
:set <option>? |
显示option的设定值 |
:set nooption |
取消当前设定值 |
:syntax on |
设置语法高亮 |
:set tabstop=4 或:set ts=4 |
设置tab键对应的空格数 |
:set expandtab |
设置tab自动替换为空格 |
:set nohls 或:nohlsearch |
设置不高亮选中单词 |
:set clipboard+=unnamed |
设置与当前设备共享剪贴板 |
:set cul /:set cuc |
设置高亮行/列 |
imap <F4> if __name__ == '__main__': |
设置快捷键映射 |
inoremap _main if __name__ == '__main__': |
设置不递归调用映射 |
:set pastetoggle |
粘贴切换(粘贴中自动缩进的问题) |
:set ruler |
设置显示光标位置 |
4. 高级功能
多文件编辑
命令 |
说明 |
vim 1.txt 2.txt |
同时打开多个文件 |
vim -d 1.txt 2.txt |
比较多个文件 |
:n /:N |
切换到下/上一个文件 |
:n! /:N! |
强制切换到下/上一个文件,之前的文件输入不保存 |
:e 3.txt |
再打开一个文件 |
:e# |
回到前一个文件 |
:ls |
列出以前编辑过的文档 |
:b 2.txt 或编号 |
直接跳转到该文件进行编辑 |
:bd 2.txt 或编号 |
删除以前编辑过的列表中的文件项目 |
e! 4.txt |
新打开文件,并放弃正在编辑的内容 |
:f |
显示正在编辑的文件名 |
f new.txt |
给正在编辑的文件重命名 |
vim -r :ewcover 1.txt |
因断电等原因没有保存的文件恢复方式 |
可视模式
命令 |
说明 |
v |
进入可视模式,光标走过位置被选中,再次按v 取消 |
Shift+v |
进入可视模式,按行进行选中,再次按Shift+v 取消 |
Ctrl+v |
进入可视模式,按矩形区域进行选中,再次按Ctrl+v 取消 |
d |
可视模式下删除选区内容 |
y |
可视模式下复制选取内容 |
视窗操作
命令 |
说明 |
:new |
打开一个新的水平视窗 |
vsp 2.txt |
打开新的垂直分屏视窗来编辑 1.txt |
:sp 1.txt |
打开新的水平分屏视窗来编辑 1.txt |
Ctrl+w s |
将当前窗口分割成两个水平的窗口 |
Ctrl+w v |
将当前窗口分割成两个垂直的窗口 |
Ctrl+w q |
即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q! |
Ctrl+w o |
打开一个视窗并隐藏之前的所有视窗 |
Ctrl+w j |
移至下面视窗 |
Ctrl+w k |
移至上面视窗 |
Ctrl+w h |
移至左边视窗 |
Ctrl+w l |
移至右边视窗 |
Ctrl+w J |
将当前视窗移至下面 |
Ctrl+w K |
将当前视窗移至上面 |
Ctrl+w H |
将当前视窗移至左边 |
Ctrl+w L |
将当前视窗移至右边 |
Ctrl+w - |
减小视窗的高度 |
Ctrl+w + |
增加视窗的高度 |
给文件加密
命令 |
说明 |
vim -x 文件名 |
输入您的密码,确认密码。下次打开就会要求输入密码 |
执行外部命令
命令 |
说明 |
:!ls |
显示当前目录的内容 |
:!rm FILENSME |
删除名为FILENAME的文件 |
w FILENAME |
将当前正在编辑的文件另存为FILENAME的文件 |
帮助系统
命令 |
说明 |
F1 |
普通模式打开vim预设的帮助文档 |
:h shiftwidth |
打开名为shiftwidth的帮助文件 |
:ver 或:version |
显示版本号及参数 |
录制宏
命令 |
说明 |
q+任意字母 |
开始录制宏,再次按q取消录制 |
@+录制前输入的字母 |
播放宏 |
5. 操作实例
录制宏步骤
步骤:
- 在底行模式下输入
qa
后敲回车。其中a表示该宏的名称,可以自定义其他名称
- 接下来进行vim的操作,该操作会被完整的录制下来。
- 做完操作后回到底行模式按
q
结束录制。
- 如果需要播放就使用
@a
,a表示录制之前给宏取的名字。
实际使用示例:
在安装ArchLinux的时候,有一步需要将所有中国的镜像源提取到最前面去,但是所有中国的镜像源又分布在文件不同的位置,此时就可以使用VIM的宏来进行操作
- 在normal模式下按
qa
,然后敲回车
- 然后输入
/China
从当前行向下查找China字符
- 在找到的地方使用
2dd
剪切两行,4gg
跳到第四行,p
进行粘贴
- 按
q
结束录制
- 再输入
@a
就会重复2、3步骤
多行注释
注释:
ctrl+v
- 进入可视化块模式
- 上下移动光标选中需要注释的代码
I
(大i) - 进入插入模式
- 输入注释符号
- 按
ese
键完成
取消注释:
ctrl+v
- 进入可视化块模式
- 上下移动光标选中需要注释的代码
- 按小
d
即可取消注释
选中引号内的内容
v
- 进入可视模式
2i"
- 选中双引号内的内容,同时选中双引号本身,但是不包括引号外的空格