Vim模式系统
Vim采用多模式编辑设计,各模式功能明确:
-
命令模式(Normal mode):
- 默认进入模式
- 执行导航和编辑命令
- 所有其他模式的起点和终点
-
插入模式(Insert mode):
- 文本输入和修改
- 通过命令模式进入
-
低行模式(Command-line mode):
- 执行扩展命令
- 需从命令模式进入
模式转换方法
- 命令模式→插入模式:i(当前光标前插入)、a(当前光标后插入)、o(下方新行插入)
- 插入模式→命令模式:Esc键
- 命令模式→低行模式::键
命令模式核心操作
光标移动命令
- 基本移动:h(左)、j(下)、k(上)、l(右)
- 单词移动:w(下一个单词开头)、b(前一个单词开头)、e(当前单词结尾)
- 行内移动:0(行首)、$(行尾)、^(行首非空字符)
- 文件移动:gg(文件首)、G(文件尾)、nG(第n行)
- 屏幕移动:Ctrl+u(上翻半页)、Ctrl+d(下翻半页)、Ctrl+f(下翻整页)、Ctrl+b(上翻整页)
文本编辑命令
- 复制操作:yy(复制当前行)、nyy(复制n行)
- 删除操作:dd(删除当前行)、ndd(删除n行)、x(删除当前字符)、X(删除前一个字符)
- 粘贴操作:p(粘贴到光标后)、P(粘贴到光标前)
- 撤销重做:u(撤销)、Ctrl+r(重做)
- 重复操作:.(重复上次修改)
组合编辑命令
- 修改操作:cw(修改单词)、c$(修改到行尾)、ci"(修改引号内内容)
- 删除操作:di[(删除方括号内内容)、dt)(删除到右括号前)
- 复制操作:yiw(复制当前单词)、y$(复制到行尾)
低行模式重要命令
文件操作
- :w - 保存文件
- :q - 退出编辑器
- :wq - 保存并退出
- :q! - 强制退出不保存
- :e filename - 打开指定文件
搜索替换
- /pattern - 向前搜索指定模式
- ?pattern - 向后搜索指定模式
- :s/old/new - 替换当前行第一个匹配
- :s/old/new/g - 替换当前行所有匹配
- :%s/old/new/g - 替换全文所有匹配
- :nohl - 取消搜索高亮
窗口管理
- :sp - 水平分割窗口
- :vsp - 垂直分割窗口
- Ctrl+w h - 切换到左侧窗口
- Ctrl+w j - 切换到下方窗口
- Ctrl+w k - 切换到上方窗口
- Ctrl+w l - 切换到右侧窗口
- Ctrl+w = - 均衡窗口大小
其他实用模式
可视化模式
- v - 进入字符选择模式
- V - 进入行选择模式
- Ctrl+v - 进入块选择模式
- y - 复制选中内容
- d - 删除选中内容
- x - 剪切选中内容
替换模式
- R - 进入替换模式
- r - 替换单个字符
Vim配置基础
常用设置(~/.vimrc)
" 显示设置
set number " 显示行号
set ruler " 显示光标位置
set showcmd " 显示未完成命令
set laststatus=2 " 总是显示状态栏
" 搜索设置
set hlsearch " 高亮搜索结果
set incsearch " 实时搜索
set ignorecase " 忽略大小写
set smartcase " 智能大小写匹配
" 缩进设置
set tabstop=4 " Tab显示宽度
set shiftwidth=4 " 自动缩进宽度
set expandtab " Tab转空格
set autoindent " 自动缩进
" 其他设置
set backspace=indent,eol,start " 退格键行为
set mouse=a " 启用鼠标
syntax on " 语法高亮
高效编辑技巧
- 数字前缀:几乎所有命令前都可加数字,例如5dd删除5行,3w向前移动3个单词
- 标记系统:使用ma在当前光标位置设置标记a,使用'a跳转到标记a的位置
- 寄存器操作:"ayy将当前行复制到a寄存器,"ap粘贴a寄存器内容
- 宏录制:qa开始录制宏到a寄存器,q停止录制,@a执行录制的宏
- 命令组合:gUiw将当前单词转为大写,gUU将当前行转为大写
插件推荐
- Vim-plug:轻量级插件管理器,安装简单配置方便
- NERDTree:文件系统浏览器,方便项目文件导航
- vim-surround:简化括号、引号等包围符号的操作
- vim-commentary:快速注释/取消注释代码块
- vim-gitgutter:在编辑器中显示Git修改状态
- fzf.vim:提供模糊查找功能,快速定位文件内容
学习资源
- 内置教程:在终端输入vimtutor启动交互式教程
- 帮助系统:在Vim中输入:help查看完整帮助文档
- 帮助搜索:使用:helpgrep搜索特定主题的帮助内容
- 在线文档:访问vimdoc.sourceforge.net获取官方文档
- 视频教程:vimcasts.org提供专业的Vim教学视频