VIM从入门指南

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 括号匹配跳转

% 可跳转到配对的括号(小括号、方括号、大括号),常用于查看 ifwhile 的范围。

2.2 万能方括号

复制代码
[( - 移动到匹配的左括号
]) - 移动到匹配的右括号
[/ - 在注释之间移动
[# - 在编译预处理之间移动
[[ - 回到当前函数最开始的左大括号
[i - 查看变量声明
[Ctrl+i - 跳转到函数定义
[d - 查看宏名的定义

三、宏录制:自动化重复操作

3.1 什么是宏录制

在VIM中,所有重复性的输入工作都可以通过录制宏来完成。简单来说,就是录下你的操作,然后让VIM重复执行。

3.2 基本使用

录制宏:

  1. ESC 切换到普通模式
  2. q 键,再按一个字母(如 a,作为寄存器名)
  3. 屏幕下方显示 recording 字样
  4. 执行你的操作
  5. 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 打开帮助文档。


参考资源

相关推荐
sdhongjun20 小时前
VSCode vim Normal模式下无法输入中文到指令参数
ide·vscode·vim
亿洋1 天前
vscode的continue插件接入第三方自定义中转api
人工智能·vscode·编辑器
AI浩1 天前
第 5 章:集成开发环境 (IDE) 协作 —— 终端与编辑器的双剑合璧
ide·人工智能·编辑器
日出等日落1 天前
用 Kavita实现我的远程数字书屋搭建记!
java·开发语言·ide·vscode·编辑器
Roselind_Yi1 天前
云计算实验实操|Keystone安装配置+CloudSim仿真平台部署(超详细图文版)
java·经验分享·笔记·ubuntu·云计算·vim·虚拟机
Sarapines Programmer2 天前
【VSCode插件】VSCode 插件 Roo Code 简明指南
ide·vscode·编辑器
原来是猿2 天前
VSCode常见快捷键大全
ide·vscode·编辑器
liudanzhengxi2 天前
Git+云原生:K8s配置版本管理实战指南
开发语言·编辑器
shughui2 天前
Cursor下载安装以及和VSCode的区别(附安装包)
ide·vscode·ai·编辑器·cursor