VIM使用指南
VIM使用指南
MaoDeYuVIM 完整使用指南
VIM(Vi IMproved)是一款功能强大且高度可定制的文本编辑器,广泛应用于编程、系统管理和文本处理等领域。VIM 基于经典的 Vi 编辑器,增加了许多现代化的功能,使其在效率和灵活性上有显著提升。本指南将从基础到高级,全面介绍 VIM 的使用方法,帮助您充分发挥其潜力。
目录
- VIM 简介
- VIM 安装与启动
- VIM 模式
- 基本导航
- 编辑文本
- 复制与粘贴(Yank 与 Put)
- 搜索与替换
- 高级编辑操作
- 寄存器(Registers)
- 宏(Macros)
- 分屏与窗口管理
- 缓冲区与标签页
- 自定义配置(.vimrc)
- 插件管理
- VIM 高级技巧
- 结语
1. VIM 简介
VIM 是一个高度可定制的文本编辑器,具有强大的文本处理能力和丰富的插件生态系统。它支持多种编程语言的语法高亮、代码折叠、自动补全等功能,同时通过键盘操作提高编辑效率。
VIM 的特点
- 模式编辑:通过不同的模式(如普通模式、插入模式等)实现不同的操作。
- 可扩展性:支持大量插件和脚本,可以根据需求定制功能。
- 轻量高效:占用资源少,响应快速,适用于各种操作系统。
- 跨平台:可在 Linux、macOS、Windows 等系统上运行。
2. VIM 安装与启动
安装 VIM
在 Linux 上
大多数 Linux 发行版默认已经安装 VIM。如果没有,可以使用包管理器进行安装。
- Debian/Ubuntu - 1 
 2- sudo apt update 
 sudo apt install vim
- Fedora - 1 - sudo dnf install vim 
- Arch Linux - 1 - sudo pacman -S vim 
在 macOS 上
使用 Homebrew 安装:
| 1 | brew install vim | 
在 Windows 上
可以下载预编译的安装包:
安装完成后,可以通过命令行或图形界面启动 VIM。
启动 VIM
- 打开一个文件 - 1 - vim 文件名 
- 新建并编辑文件 - 如果文件不存在,VIM 会创建一个新文件: - 1 - vim 新文件.txt 
- 不带文件启动 - 直接输入 - vim打开空白编辑器:- 1 - vim 
3. VIM 模式
VIM 的核心在于其多模式编辑机制,主要包括以下几种模式:
- 普通模式(Normal Mode) - 默认模式,用于导航、删除、复制、粘贴等操作。 
- 插入模式(Insert Mode) - 用于输入文本。可通过按 - i、- a、- o等命令进入。
- 可视模式(Visual Mode) - 用于选择文本范围,可通过按 - v(字符可视)、- V(行可视)或- Ctrl+v(块可视)进入。
- 命令行模式(Command-Line Mode) - 用于执行命令,如保存文件、退出、搜索等。通过按 - :进入。
- 替换模式(Replace Mode) - 用于替换现有字符。通过按 - R进入。
切换模式
- 从普通模式进入插入模式 - i:在光标前插入
- I:在行首插入
- a:在光标后追加
- A:在行尾追加
- o:在当前行下方新开一行并进入插入模式
- O:在当前行上方新开一行并进入插入模式
 
- 从插入模式返回普通模式 - 按 - Esc键
- 从普通模式进入可视模式 - v:字符可视模式
- V:行可视模式
- Ctrl+v:块可视模式
 
- 从普通模式进入命令行模式 - 按 - :键
4. 基本导航
在普通模式下,可以使用多种快捷键进行高效导航。
移动光标
- h:左移一个字符
- j:下移一行
- k:上移一行
- l:右移一个字符
快速移动
- w:跳到下一个单词的开头
- e:跳到当前或下一个单词的结尾
- b:跳到上一个单词的开头
- 0(零):跳到行首
- ^:跳到行首第一个非空字符
- $:跳到行尾
- gg:跳到文件开头
- G:跳到文件末尾
- {数字}G:跳到指定行号- 例如,10G跳到第 10 行
 
- 例如,
页面滚动
- Ctrl+f:向前滚动一页
- Ctrl+b:向后滚动一页
- Ctrl+d:向前滚动半页
- Ctrl+u:向后滚动半页
查找
- /pattern:向前搜索- pattern
- ?pattern:向后搜索- pattern
- n:跳到下一个匹配项
- N:跳到上一个匹配项
5. 编辑文本
在插入模式下,可以进行文本输入和编辑。
插入文本
进入插入模式后,可以直接输入文本:
- i:在光标前插入
- a:在光标后插入
- o:在当前行下方新开一行并插入
- O:在当前行上方新开一行并插入
删除文本
在普通模式下,可以使用以下命令删除文本:
- x:删除光标所在的字符
- X:删除光标前的字符
- dw:删除从光标到下一个单词的开头
- dd:删除当前行
- d$:删除光标到行尾的内容
- d0:删除光标到行首的内容
修改文本
- cw:修改从光标到下一个单词开头的内容
- c$:修改从光标到行尾的内容
- c0:修改从光标到行首的内容
- r{char}:替换光标所在的字符为- {char}
- R:进入替换模式,可以连续替换多个字符
撤销与重做
- u:撤销上一步操作
- Ctrl+r:重做上一步撤销的操作
6. 复制与粘贴(Yank 与 Put)
VIM 中的复制称为“yank”,粘贴称为“put”。复制的内容存储在寄存器中,可在不同位置粘贴。
复制(Yank)
- yy或- Y:复制当前行
- {数字}yy:复制指定数量的行- 例如,5yy复制当前行及其下 4 行
 
- 例如,
- yw:复制从光标到单词结尾的内容
- y$:复制从光标到行尾的内容
- y0:复制从行首到光标的内容
- v+ 移动光标 +- y:复制选中的文本(可视模式)
粘贴(Put)
- p:在光标后粘贴
- P:在光标前粘贴
- "+p或- "*p:从系统剪贴板粘贴(取决于系统配置)
使用寄存器
- "aY:将当前行复制到寄存器- a
- "ap:从寄存器- a粘贴内容
- 可以使用多个寄存器(a到z)进行分类存储
7. 搜索与替换
VIM 提供强大的搜索与替换功能,支持正则表达式,便于高效编辑。
搜索
- /pattern:向前搜索- pattern
- ?pattern:向后搜索- pattern
- n:跳转到下一个匹配项
- N:跳转到上一个匹配项
- *:搜索光标下的单词
- #:反向搜索光标下的单词
高亮显示
- :set hlsearch:启用搜索高亮
- :nohlsearch或- :noh:取消搜索高亮
- :set incsearch:启用增量搜索,即输入搜索模式时即时显示匹配结果
替换
- :s/pattern/replacement/:替换当前行第一个匹配项
- :s/pattern/replacement/g:替换当前行所有匹配项
- :%s/pattern/replacement/g:替换整个文件所有匹配项
- :n,m s/pattern/replacement/g:替换第- n行到第- m行的匹配项- 例如,:10,20s/foo/bar/g替换第 10 行到第 20 行中的所有foo为bar
 
- 例如,
- :s/pattern/replacement/gc:在替换时逐个确认- 按提示输入 y(替换)、n(跳过)、a(全部替换)、q(退出)、l(仅替换当前项)
 
- 按提示输入 
使用正则表达式
VIM 的搜索与替换支持正则表达式,使其更加强大。
- 匹配行首 - 1 - /^pattern/ 
- 匹配行尾 - 1 - /pattern$/ 
- 匹配任意字符 - 1 - /p.ttern/ " 匹配 p后任意字符ttern 
- 匹配多个选项 - 1 - /foo\|bar/ 
- 匹配单词边界 - 1 - /\<foo\>/ " 匹配整个单词 foo 
8. 高级编辑操作
自动缩进
- >>:将当前行向右缩进一个级别
- <<:将当前行向左缩进一个级别
- ={motion}:重新缩进选定区域- 例如,=G:从当前行到文件末尾重新缩进
 
- 例如,
代码折叠
VIM 支持代码折叠,便于管理大文件。
- zc:关闭当前折叠
- zo:打开当前折叠
- zM:关闭所有折叠
- zR:打开所有折叠
- za:切换当前折叠状态
移动与交换
- {number}j或- {number}k:上下移动指定行数- 例如,3j向下移动 3 行
 
- 例如,
- :m {destination}:移动当前行到指定位置- 例如,:m 10将当前行移动到第 10 行
 
- 例如,
- :move {source} {destination}:移动指定范围的行- 例如,:3,5m 10将第 3 到第 5 行移动到第 10 行后
 
- 例如,
复制与粘贴高级用法
- y{motion}:复制指定范围- 例如,y$复制从光标到行尾
 
- 例如,
- p和- P:粘贴位置可以根据需求灵活选择
9. 寄存器(Registers)
VIM 的寄存器用于存储复制、删除或其他操作的内容。默认寄存器和命名寄存器可用于分类管理文本。
常用寄存器
- 默认寄存器 ( - ")- 自动存储最近的复制或删除内容
 
- 命名寄存器 ( - "a到- "z)- 可以手动指定复制或删除内容存储到特定寄存器
 
- 系统剪贴板寄存器 ( - "+和- "*)- "+:通常对应系统剪贴板
- "*:通常对应系统选择缓冲区
 
使用寄存器
- 复制到命名寄存器 - 1 
 2- "ayy "a 寄存器复制当前行 
 "byw "b 寄存器复制一个单词
- 从命名寄存器粘贴 - 1 
 2- "ap 从 "a 寄存器粘贴 
 "bp 从 "b 寄存器粘贴
- 复制到系统剪贴板 - 1 
 2- "+y 复制到系统剪贴板 
 "*y 复制到系统选择缓冲区
- 从系统剪贴板粘贴 - 1 
 2- "+p 从系统剪贴板粘贴 
 "*p 从系统选择缓冲区粘贴
查看寄存器内容
使用命令 :reg 或 :registers 查看当前所有寄存器的内容。
| 1 | :reg | 
10. 宏(Macros)
宏允许记录一系列操作并重复执行,大大提高编辑效率。
录制宏
- 开始录制 - 按 - q加上一个寄存器名(如- a到- z)开始录制。- 1 - qa 
- 执行操作 - 进行需要录制的操作。 
- 结束录制 - 按 - q结束录制。- 1 - q 
播放宏
- @a:执行寄存器- a中的宏
- @@:重复执行上一个宏
重复执行宏
- {number}@a:执行寄存器- a中的宏- {number}次- 例如,5@a执行宏a5 次
 
- 例如,
删除宏
宏存储在寄存器中,可以通过复制空内容覆盖:
| 1 | :let @a='' | 
11. 分屏与窗口管理
VIM 支持在同一个编辑器窗口中打开多个分屏,便于同时编辑多个文件或同一文件的不同部分。
基本分屏操作
- 水平分屏 - 1 - :split 或 :sp 
- 垂直分屏 - 1 - :vsplit 或 :vsp 
- 打开文件在分屏中 - 1 
 2- :split 文件名 
 :vsplit 文件名
窗口导航
- Ctrl+w h:跳转到左边的窗口
- Ctrl+w j:跳转到下边的窗口
- Ctrl+w k:跳转到上边的窗口
- Ctrl+w l:跳转到右边的窗口
- Ctrl+w w:在所有窗口间循环切换
- Ctrl+w t:跳转到最上面的窗口
- Ctrl+w b:跳转到最下面的窗口
调整窗口大小
- Ctrl+w >:增大垂直分屏的宽度
- Ctrl+w <:减小垂直分屏的宽度
- Ctrl+w +:增大水平分屏的高度
- Ctrl+w -:减小水平分屏的高度
- Ctrl+w =:使所有窗口大小相等
关闭窗口
- :q:关闭当前窗口
- :close:关闭当前窗口
- :only:关闭所有其他窗口,只保留当前窗口
12. 缓冲区与标签页
缓冲区(Buffers)
VIM 中的每个打开的文件都对应一个缓冲区。可以在多个缓冲区间切换。
- 列出所有缓冲区 - 1 - :ls 或 :buffers 
- 切换缓冲区 - 1 - :buffer {编号或名称} - 例如, - :buffer 2切换到缓冲区 2
- 删除缓冲区 - 1 - :bd 或 :bdelete - 关闭当前缓冲区 
标签页(Tabs)
标签页允许在一个 VIM 实例中打开多个标签,每个标签可以包含多个窗口。
- 打开新标签页 - 1 - :tabnew 或 :tabnew 文件名 
- 切换标签页 - gt:跳转到下一个标签页
- gT:跳转到上一个标签页
- {数字}gt:跳转到指定编号的标签页
 
- 关闭标签页 - 1 - :tabclose 或 :tabc 
- 列出所有标签页 - 1 - :tabs 
13. 自定义配置(.vimrc)
VIM 的行为可以通过配置文件 .vimrc 进行定制。配置文件通常位于用户主目录下。
创建或编辑 .vimrc
| 1 | vim ~/.vimrc | 
常用配置项
| 1 | " 启用行号 | 
配置说明
- 行号与相对行号 - set number:显示绝对行号
- set relativenumber:显示相对行号,便于跳转
 
- 缩进设置 - set tabstop=4:设置 Tab 键为 4 个空格
- set shiftwidth=4:设置自动缩进为 4 个空格
- set expandtab:将 Tab 键转换为空格
 
- 搜索配置 - set ignorecase:搜索时忽略大小写
- set smartcase:如果搜索模式中包含大写字母,则区分大小写
 
- 界面配置 - syntax on:启用语法高亮
- colorscheme {theme}:设置颜色主题
 
自动加载插件管理器
使用插件管理器可以方便地安装和管理 VIM 插件,如 Vundle、Pathogen、vim-plug 等。
示例:使用 vim-plug
- 安装 vim-plug - 1 
 2- curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ 
 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 在 - .vimrc中添加插件配置- 1 
 2
 3
 4
 5
 6
 7
 8- call plug#begin('~/.vim/plugged') 
 " 插件列表
 Plug 'tpope/vim-sensible'
 Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
 Plug 'preservim/nerdtree'
 call plug#end()
- 安装插件 - 在 VIM 中执行以下命令: - 1 - :PlugInstall 
14. 插件管理
插件扩展了 VIM 的功能,提升编辑效率和用户体验。常见的插件管理器包括 vim-plug、Vundle 和 Pathogen。
常用插件推荐
- 文件浏览器 
- 模糊查找 
- 自动补全 
- 状态栏 
- 语法高亮与代码折叠 
- Git 集成 
- 主题与配色 
安装插件示例(使用 vim-plug)
- 安装 vim-plug - 参考前一章节的步骤。 
- 在 - .vimrc中添加插件- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22- call plug#begin('~/.vim/plugged') 
 " 文件浏览器
 Plug 'preservim/nerdtree'
 " 模糊查找
 Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
 Plug 'junegunn/fzf.vim'
 " 自动补全
 Plug 'neoclide/coc.nvim', {'branch': 'release'}
 " 状态栏
 Plug 'vim-airline/vim-airline'
 " Git 集成
 Plug 'tpope/vim-fugitive'
 " 主题
 Plug 'morhetz/gruvbox'
 call plug#end()
- 安装插件 - 在 VIM 中执行 - :PlugInstall
管理插件
- 更新插件 - 1 - :PlugUpdate 
- 移除插件 - 从 .vimrc中删除对应的Plug行
- 执行 :PlugClean删除未使用的插件
 
- 从 
15. VIM 高级技巧
快捷键映射
通过 .vimrc 自定义快捷键,提高操作效率。
示例:
| 1 | " 将 jk 映射为 Esc | 
说明:
- inoremap:在插入模式下映射
- nnoremap:在普通模式下映射
- <leader>:领导键,默认是- \,可以在- .vimrc中自定义,如- let mapleader=","
快速移动与跳转
- gg:跳转到文件开头
- G:跳转到文件末尾
- {number}G:跳转到指定行号
- Ctrl+o:返回前一个跳转位置
- Ctrl+i:前进到下一个跳转位置
- m{char}:设置标记- {char}
- '{char}:跳转到标记- {char}的行
自动命令(Autocommands)
自动执行特定事件的命令,提高工作流效率。
示例:
| 1 | " 在保存 Python 文件时自动格式化 | 
补全与代码片段
利用插件如 coc.nvim 或 YouCompleteMe 提供智能补全功能,提升编程效率。
代码片段(Snippets)
使用插件如 UltiSnips 创建和管理代码片段。
示例:
| 1 | " 在 .vimrc 中配置 UltiSnips | 
使用外部工具
VIM 可以与多种外部工具集成,如编译器、调试器等。
示例:
- 编译代码 - 1 - :make 
- 查看编译错误 - 1 - :copen 
- 快速跳转到错误位置 - 使用 - :cnext和- :cprev
版本控制集成
使用插件如 vim-fugitive 集成 Git 功能。
常用命令:
- :Gstatus:查看 Git 状态
- :Gdiff:查看差异
- :Gcommit:提交更改
- :Gpush:推送更改
代码调试
使用插件如 Vimspector 进行代码调试。
配置示例:
参考插件文档进行详细配置,根据编程语言选择合适的调试器。
使用终端
VIM 8 及以上版本支持内置终端,允许在编辑器内执行命令行操作。
打开终端:
| 1 | :terminal | 
分屏中打开终端:
| 1 | :split | terminal | 
16. 结语
VIM 是一款极具深度和广度的文本编辑器,通过不断学习和实践,您可以掌握其强大的功能,提高工作效率。本指南涵盖了从基础到高级的各类操作,但 VIM 的世界远不止于此。建议您结合实际需求,探索更多功能,并根据个人习惯进行定制化配置。
进一步学习资源
- VIM 官方文档
- VIM Tutor(内置教程,输入 vimtutor命令启动)
- VIM Awesome(插件集合)
- VIM Adventures(通过游戏学习 VIM)








