VIM从入门指南
本文整合了VIM基础操作、宏录制、vimPlus插件使用及VIM打造IDE的完整内容,适合从零开始的VIM学习者。
一、VIM基础:工作模式与基本操作
1.1 VIM与Vi的关系
VIM(Vi IMproved)是从Vi发展而来的文本编辑器,功能更强大。日常使用的vi命令实际上调用的就是VIM编辑器。
1.2 工作模式
VIM有三种主要工作模式:
| 模式 | 进入方式 | 用途 |
|---|---|---|
| 命令模式 | 启动默认 | 移动光标、复制粘贴、删除等 |
| 文本模式 | i/a/o等 | 编辑文本内容 |
| 末行模式 | : / ? | 保存、退出、替换、搜索 |
1.3 命令模式常用操作
移动光标:
H - 前 J - 下 K - 上 L - 后
0 - 行首 $ - 行尾
gg - 文本首 G - 文本尾
nG - 跳转到第n行(如 500G 跳转到第500行)
删除操作:
x - 删除光标后的单个字符
X - 删除光标前的单个字符
dw - 删除单词(光标需在单词首字母)
D0 - 删除光标前的内容
D - 删除光标后的内容
dd - 删除光标所在行
ndd - 删除光标后的n行
复制粘贴:
yy - 复制所在行
nyy - 复制光标后的n行
p - 在光标下新建一行粘贴/在当前光标后粘贴
P - 在光标所在行粘贴/在当前光标前粘贴
撤销操作:
u - 撤销
Ctrl+u - 反撤销
查找:
/字符串 - 向下查找
n - 查找下一个
N - 查找上一个
# - 查找光标所在单词
1.4 文本模式
a - 在光标后插入
A - 在行尾插入
i - 在光标前插入
I - 在行首插入
o - 在下一行插入
O - 在上一行插入
s - 删除光标后字符并插入
S - 删除整行并插入
1.5 末行模式
:行号 - 跳转到指定行
:s/old/new/g - 替换当前行
:%s/old/new/g - 替换全文
:27,30s/old/new/g - 替换指定行范围
:!命令 - 执行外部命令
1.6 分屏操作
:sp - 水平分屏
:vsp - 垂直分屏
Ctrl+w+w - 切换分屏
:vertical res 数字 - 改变左右分屏比例
:res 数字 - 改变上下分屏比例
二、VIM原生高级功能
2.1 括号匹配跳转
按 % 可跳转到配对的括号(小括号、方括号、大括号),常用于查看 if、while 的范围。
2.2 万能方括号
[( - 移动到匹配的左括号
]) - 移动到匹配的右括号
[/ - 在注释之间移动
[# - 在编译预处理之间移动
[[ - 回到当前函数最开始的左大括号
[i - 查看变量声明
[Ctrl+i - 跳转到函数定义
[d - 查看宏名的定义
三、宏录制:自动化重复操作
3.1 什么是宏录制
在VIM中,所有重复性的输入工作都可以通过录制宏来完成。简单来说,就是录下你的操作,然后让VIM重复执行。
3.2 基本使用
录制宏:
- 按
ESC切换到普通模式 - 按
q键,再按一个字母(如a,作为寄存器名) - 屏幕下方显示
recording字样 - 执行你的操作
- 按
q结束录制
查看宏:
:register a " 查看寄存器a中的宏内容
执行宏:
@a " 执行宏a一次
n@a " 执行宏a n次
删除宏:
qaq " 清空宏a
:let @a = '' " 命令方式清空
3.3 实战示例
示例1:给每行行首加上注释 //
1. gg 来到首行
2. qa 开始录制
3. 0 来到行首
4. i 进入插入模式
5. 输入 //
6. ESC 退出插入模式
7. j 来到下一行
8. q 结束录制
执行 n@a 即可为n行添加注释。
示例2:给文本加上递增序号
1. 给第一行加上序号 "1."
2. 光标放在第二行,按 qa 开始录制
3. k 来到上一行
4. 0 来到行首
5. yf. 复制到点号
6. j 来到下一行
7. 0 来到行首
8. Shift+p 粘贴
9. 光标移到数字上,按 Ctrl+a 让数字加1
10. j 来到下一行
11. q 结束录制
四、VIM配置文件
配置文件路径:
- 系统级:
/etc/vim/vimrc - 用户级:
~/.vimrc
常用配置:
vim
set number " 显示行号
set nowrap " 不自动换行
set tabstop=4 " TAB键表示的空格数
set shiftwidth=4 " 缩进表示的空格数
set autoindent " 智能自动缩进
set hlsearch " 搜索高亮
set incsearch " 实时匹配搜索
" F2清除屏幕高亮
nmap <f2> :noh<cr>
imap <f2> <esc><f2>a
五、使用ctags实现代码跳转
5.1 安装
bash
sudo apt-get install ctags
5.2 生成tags文件
bash
# 递归生成当前目录及子目录的tags
ctags -R
# 为C/C++项目生成完整tags
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
ctags -R --c-kinds=+px --fields=+iaS --extra=+q
# 生成系统函数tags
ctags --fields=+iaS --extra=+q -R -f ~/.vim/systags /usr/include /usr/local/include
5.3 使用方法
bash
# 在.vimrc中添加
set tags=tags;
set autochdir
set tags+=~/.vim/systags
快捷键:
Ctrl + ] " 跳转到定义
Ctrl + o " 返回跳转前位置
Ctrl + t " 返回
:ta name " 跳转到标签
:tags " 查看跳转历史
gd " 定位局部变量
六、安装vimPlus打造IDE
6.1 环境准备
检查VIM版本:
bash
vim --version
需要VIM 8.0及以上版本,且支持Python3:
bash
vim --version | grep python
# 看到 +python3 表示支持
6.2 从源码编译VIM(如需要)
bash
# 安装依赖
yum install ncurses-devel
# 下载源码
wget https://github.com/vim/vim/archive/master.zip
unzip master.zip
cd vim-master
# 配置
sudo ./configure --with-features=huge --enable-python3interp \
--with-python-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu
# 编译安装
sudo make
sudo make install
# 配置PATH
export PATH=/usr/local/bin:$PATH
6.3 安装vimPlus
bash
# 克隆仓库
git clone https://github.com/chxuan/vimplus.git ~/vimplus-master
# 安装
cd ~/vimplus-master
./install.sh
# 安装过程中选择 Python3 编译 YCM
6.4 vimPlus常用快捷键
| 快捷键 | 功能 |
|---|---|
, + n |
打开资源管理器 |
, + T |
查看函数列表 |
, + u |
转到定义 |
gcc |
注释当前行 |
gc |
可视模式下注释选中部分 |
gcu |
撤销上次注释 |
= |
对齐代码(先在可视模式选中) |
Ctrl+n/p |
切换标签页 |
Ctrl+w+w |
切换分屏 |
6.5 查看帮助
进入VIM后,在普通模式下按 , + h 打开帮助文档。