基本概念
提示:本文是网络资源整理
- 模式: vim 有多种模式,每种模式都有不同的功能。 - 普通模式 (Normal Mode): 默认模式,用于导航和执行命令。
- 插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。
- 可视模式 (Visual Mode): 用于选择文本。可以通过按 v 进入。
- 命令模式 (Command-Line Mode): 用于执行命令。可以通过按 : 进入。
 
启动和退出
- 启动 vim: 在终端中输入 vim filename。
- 退出 vim: - 保存并退出: :wq 或 :x
- 仅保存: :w
- 仅退出(不保存更改): :q!
 
基本操作
普通模式
-  移动光标: - 左移: h
- 右移: l
- 上移: k
- 下移: j
- 到行首: 0
- 到行尾: $
- 跳到文件开头: gg
- 跳到文件末尾: G
 
-  文本操作: - 删除当前字符: x
- 删除当前行: dd
- 删除到行尾: d$
- 复制当前行: yy
- 粘贴: p
- 撤销: u
- 恢复: Ctrl+r
 
-  查找和替换: - 查找文本: /pat 然后按 Enter
- 查找下一个匹配: n
- 查找上一个匹配: N
- 替换当前行第一个匹配的文本: 😒/old/new/
- 替换当前行所有匹配的文本: 😒/old/new/g
- 替换整个文件所有匹配的文本: :%s/old/new/g
 
插入模式
-  进入插入模式: - 在光标前插入: i
- 在光标后插入: a
- 在当前行前插入新行: O
- 在当前行后插入新行: o
 
-  退出插入模式: 按 Esc 
可视模式
-  选择文本: - 字符选择: v
- 行选择: V
- 块选择: Ctrl+v
 
-  操作选择的文本: - 复制选择的文本: y
- 删除选择的文本: d
- 粘贴: p
 
- 命令模式 - 保存文件: :w
- 退出 vim: :q
- 保存并退出: :wq 或 :x
- 撤销更改: :undo
- 恢复更改: :redo
 
高级功能
窗口和标签
-  分割窗口: - 横向分割: :split filename
- 纵向分割: :vsplit filename
 
-  在窗口之间切换: Ctrl+w 然后使用方向键 
-  关闭当前窗口: :q 
宏和自动化
录制宏:
1、开始录制:
-  按 q 进入录制模式,然后按一个寄存器键(如 q)。这个寄存器键会用来存储录制的宏。 
-  示例: 按 q 然后按 a 开始录制到寄存器 a 中。 
 2、执行操作:
-  执行你希望录制的操作。例如,移动光标、删除文本、插入文本等。 
 3、停止录制:
-按 q 停止录制宏。此时,所有在录制期间执行的操作都会存储在你选择的寄存器中。
执行宏
1、执行宏:
- 要执行录制的宏,按 @ 然后按寄存器键。
- 示例: 按 @a 执行存储在寄存器 a 中的宏。
常见问题及解决方法
1、宏没有效果:
-  确保你在正确的模式下运行宏。通常,宏在普通模式下执行。 
-  检查宏是否录制正确。可以通过执行 :registers 查看寄存器的内容,确认录制的宏是否存在。 
 2、宏录制错误:
-  如果录制的宏不如预期工作,可能是因为在录制过程中操作的不一致。尝试重新录制并确保操作的步骤一致。 
 3、宏在不同上下文中执行:
-  有些宏可能依赖于特定的光标位置或上下文。在不同的上下文中运行宏可能会产生不同的效果。 
示例
假设你有一个文本文件,每一行都是一个需要删除的项目,并且你想要批量删除这些行的开头部分。
1、录制宏:
-  按 qa 开始录制到寄存器 a。 
-  移动光标到行首: 0 
-  删除到第一个空格: d 
-  移动到下一行: j 
-  停止录制: 按 q 
 2、执行宏:
-  在文件中移动光标到你想开始的行,然后按 @a 执行宏。 
-  如果你想在多行上重复宏,可以按 n@a,其中 n 是重复的次数。 
插件和扩展
vim 支持插件,通过插件可以增强编辑功能。一些常用插件管理工具包括:
- Vundle: https://github.com/VundleVim/Vundle.vim
- Pathogen: https://github.com/tpope/vim-pathogen
- vim-plug: https://github.com/junegunn/vim-plug
安装插件:
1、将插件 URL 添加到 ~/.vimrc 文件中。
 2、运行 :PluginInstall(对于 Vundle)或 :PlugInstall(对于 vim-plug)。
示例配置
在 ~/.vimrc 文件中,你可以添加一些自定义配置来增强 vim 的使用体验:
" 设置行号
set number" 高亮当前行
set cursorline" 自动缩进
set autoindent
set smartindent" 启用语法高亮
syntax on" 设置制表符宽度
set tabstop=4
set shiftwidth=4
set expandtab
参考文献
Vim 官方文档
 Vim 用户手册