导语
VIM 是 Linux 系统上一款文本编辑器,它是操作 Linux 的一款利器。  
当前有很多优秀的 IDE 都支持安装 VIM 插件,原因就是使用它便捷,高效。
本文主要记录了 VIM 的一些常用使用技巧,方便随时查阅学习。

Vim几种模式:

normal模式:进入vim不能编辑或者少按esc的不能编辑的模式;

编辑模式:通过insert(插入)、append(追加)或者少新建一行o等等可以编辑内容模式;

命令模式:类似退出 :wq这种模式;

可视化模式:visual模式;(Visual模式一般用来块状选择文本)类似于我们的shift+方向键选择;

Normal模式下使用v进入visual选择

使用V选择行

使用ctrl+v进行方块选择

基础操作

移动光标

1
2
3
4
h  //左移
j //下行
k //上行
l //右移

退出Vim

1
2
:q!  //放弃所有改动
:wq //保存改动

正常模式下删除光标所在位置的字符

1
x

插入/添加文本

1
2
i  //在光标前插入文本
A //在该行后添加文本

删除命令/动作/撤销命令

删除类命令

1
2
3
dw  //删除至下一个单词
d$ //从光标处删除至当前行尾部
de //从光标处删除至单词末尾

命令与对象

以删除命令为例,格式如下

1
d  motion

其中:

1
2
d        - 删除操作符
motion - 操作符的操作对象

一个简短的动作列表:

1
2
3
w - 从光标当前位置到下一个单词起始处
e - 从光标当前位置到单词末尾
$ - 从光标当前位置到当前行末

计数指定动作

1
2
3
4
number  motion
2w //光标向后移到第二个单词的首位
3e //光标向后移到第三个单词的末尾
0 //移动光标至行首

用计数以删除更多

以删除命令为例,格式如下:

1
d  number  motion

例如:

1
d2w  //删除连续的两个单词

操作整行

1
2
dd  //删除掉光标所在的整行
2dd = d2d //删除两行

撤销类命令

1
2
3
u  //撤销最后执行的命令
U //撤销对整行的修改
Ctrl + R //重做

置入/替换/更改命令

置入类命令

1
p  //将最后一次删除的内容置入光标之后

注意
如果最后一次删除的是一整行,则置入光标所在的下一行,否则置入光标之后。

置换类命令

1
ra  //将光标位置的字符替换为a

输入r和一个字符,即可替换光标所在位置的字符。

更改类命令

1
ce  //从光标处开始删除到单词末尾

注意
上述ce命令不仅仅是删除了一个单词,同时让你进入插入模式。

查找/定位

定位及文件状态

1
2
3
4
Ctrl + g  //在页面底部显示当前编辑的文件名和文件中光标的位置
G //光标跳转至文件最后一行
gg //光标跳转至文件第一行
number G //光标跳转至指定行

搜索类命令

1
2
3
4
5
6
/ + String  //在当前文件中查找字符串
? + String //在当前文件中逆向查找字符串
n //查找下一个该字符串
N //查找上一个该字符串
Ctrl + o //回到之前的位置
Ctrl + i //跳转到较新的位置

查找配对括号

1
%  //查找配对的括号

将光标移至任何一个括号处,按%跳转至配对的括号处,再次按%跳回配对的第一个括号处。

tips:
在程序调试时,此功能用于查找不配对的括号很有用。

替换命令

1
2
3
4
5
:s/old/new    //将光标所在行的第一个old替换为new
:s/old/new/g //将光标所在行的所有old都替换为new
:#,#s/old/new/g //将若干行内的old都替换为new,#分别代表首尾两行的行号
:%s/old/new/g //将整个文件中的old都替换为new
:%s/old/new/gc //找到整个文件中的old,并对每个old提示是否替换为new

文件操作命令

在Vim内执行外部命令

1
:! + 外部shell命令

保存文件

1
2
:w TEST  //将对文件的改动保存到TEST文件里
v motion :w TEST //将选中的行写入到TEST文件中

提取和合并文件

1
2
:r FILENAME  //将目标文件提取进来,从光标所在位置开始置入
:r !dir //读取dir命令的输入,从光标所在位置开始置入

打开/附加/置换/复制粘贴/设置类命令

打开类命令

1
2
o  //在光标的下方打开新的一行并进入插入模式
O //在光标的上方打开新的一行并进入插入模式

附加类命令

1
2
a  //在光标之后插入文本
A //在光标所在行行末插入文本

另一个置换类命令

1
R

将光标移动到需要置换文本的首个字符处,再将正确的字符逐一输入。

此方法更适用于连续的需要替换的字符。

复制粘贴文本

1
2
3
y  //复制文本
p //粘贴文本
yw //复制一个单词

使用v进入可视模式选择文本,输入y复制高亮文本,移动光标至目标处输入p粘贴。

设置类命令的选项

1
2
3
4
5
:set ic  //查找时忽略大小写
:set hls is //查找到的单词高亮显示
:set noic //禁用忽略大小写
:nohlsearch //禁用匹配项的高亮显示
\c //加在查找命令之后,仅在一次查找时忽略字母大小写

获取帮助信息/创建启动脚本

在线帮助系统

1
2
3
4
5
<HELP>
<F1>
:help //打开帮助系统

Ctrl + w Ctrl + w //在窗口之间跳转

创建启动脚本

1
2
3
:edit ~/.vimrc  //开始编辑vimrc文件
:r $VIMRUNTIME/vimrc_example.vim //读取vimrc示例文件的内容
:write //保存文件