笔记本 Logo

Vim 高级使用技巧完整内容Orig

作者: 走来走去 | 时间: 2026-11-05 00:41:24 | 访问: 12 [更新状态: 成功 (+1)]
================================================================================
                         Vim 高级使用技巧指南
================================================================================

目录:
1. 导航与移动
2. 编辑操作
3. 搜索与替换
4. 宏录制
5. 窗口与标签页管理
6. 寄存器操作
7. 可视化模式
8. 标记与跳转
9. 自动补全
10. 插件管理
11. 自定义配置
12. 调试与诊断
13. 高效工作流

================================================================================
1. 导航与移动
================================================================================

基本移动增强:
- w/W        : 移动到下一个单词开头(W忽略标点)
- b/B        : 移动到上一个单词开头
- e/E        : 移动到单词结尾
- {n}w       : 向前移动n个单词
- Ctrl+o     : 跳转到之前的位置(后退)
- Ctrl+i     : 跳转到之后的位置(前进)
- gd         : 跳转到光标下变量的定义处
- gD         : 跳转到全局变量定义

行内快速移动:
- f{char}    : 查找并移动到当前行的字符
- F{char}    : 反向查找字符
- t{char}    : 移动到字符前一个位置
- T{char}    : 反向移动到字符后
- ;          : 重复上次的f/F/t/T查找
- ,          : 反向重复查找

段落与块移动:
- {          : 移动到上一段开头
- }          : 移动到下一段开头
- [[         : 移动到上一个函数/块开头
- ]]         : 移动到下一个函数/块开头

屏幕滚动:
- Ctrl+e     : 向下滚动一行
- Ctrl+y     : 向上滚动一行
- Ctrl+d     : 向下滚动半屏
- Ctrl+u     : 向上滚动半屏
- Ctrl+f     : 向下滚动一屏
- Ctrl+b     : 向上滚动一屏
- zz         : 将当前行居中显示
- zt         : 将当前行置于顶部
- zb         : 将当前行置于底部

================================================================================
2. 编辑操作
================================================================================

高效删除:
- d{motion}  : 删除指定范围(如dw, d$, d2j)
- D          : 删除到行尾
- c{motion}  : 更改指定范围(删除并进入插入模式)
- C          : 更改到行尾
- x/X        : 删除光标处/前一个字符
- dd         : 删除整行
- {n}dd      : 删除n行

复制与粘贴:
- y{motion}  : 复制指定范围
- yy         : 复制整行
- Y          : 复制整行(同yy)
- p/P        : 在光标后/前粘贴
- gp         : 粘贴并将光标移到粘贴文本末尾

撤销与重做:
- u          : 撤销
- Ctrl+r     : 重做
- U          : 恢复整行

重复操作:
- .          : 重复上次修改操作
- {n}.       : 重复n次

多行编辑:
- Ctrl+v     : 进入可视块模式,选择多行后进行操作
- I          : 在可视块模式每行开头插入
- A          : 在可视块模式每行末尾追加
- c          : 在可视块模式更改选中内容

括号匹配:
- %          : 跳转到匹配的括号/引号
- [{         : 跳转到未匹配的{
- [(         : 跳转到未匹配的(
- [quote     : 跳转到未匹配的引号

================================================================================
3. 搜索与替换
================================================================================

基本搜索:
- /pattern   : 向前搜索
- ?pattern   : 向后搜索
- n/N        : 下一个/上一个匹配
- *          : 搜索光标下的单词
- #          : 反向搜索光标下的单词
- g*         : 搜索部分匹配

搜索选项:
- :set hlsearch    : 高亮搜索结果
- :set nohlsearch  : 取消高亮
- :set ignorecase  : 忽略大小写
- :set smartcase   : 智能大小写(有大写时区分)
- :set incsearch   : 增量搜索

正则表达式搜索:
- /\v          : 启用非常魔法模式(简化正则)
- .            : 任意字符
- *            : 零个或多个
- +            : 一个或多个
- \s           : 空白字符
- \d           : 数字
- [a-z]        : 字符范围

替换操作:
- :s/old/new           : 替换当前行第一个匹配
- :s/old/new/g         : 替换当前行所有匹配
- :%s/old/new/g        : 替换整个文件
- :%s/old/new/gc       : 替换并确认每个匹配
- :{range}s/old/new/g  : 替换指定范围

高级替换技巧:
- :%s/\(.*\)/\1/g      : 使用捕获组
- :%s/^/prefix/        : 每行添加前缀
- :%s/$/suffix/        : 每行添加后缀
- :g/pattern/d         : 删除包含pattern的行
- :v/pattern/d         : 删除不包含pattern的行

================================================================================
4. 宏录制
================================================================================

录制宏:
- q{register}  : 开始录制宏到寄存器(如qa)
- q            : 停止录制
- @{register}  : 执行宏(如@a)
- @@           : 重复执行上次宏
- {n}@{reg}    : 执行宏n次

宏编辑:
- :@{register} : 查看宏内容
- "ap          : 粘贴宏内容进行编辑
- "ay$         : 保存编辑后的宏

实用宏示例:
- 批量格式化:录制一次格式化操作,然后应用到多行
- 代码重构:录制变量重命名序列
- 数据处理:录制CSV字段提取操作

================================================================================
5. 窗口与标签页管理
================================================================================

分割窗口:
- :split       : 水平分割
- :vsplit      : 垂直分割
- Ctrl+w s     : 水平分割
- Ctrl+w v     : 垂直分割
- Ctrl+w c     : 关闭窗口
- Ctrl+w o     : 关闭其他窗口
- Ctrl+w q     : 退出当前窗口

窗口导航:
- Ctrl+w h/j/k/l : 切换到左/下/上/右窗口
- Ctrl+w w       : 循环切换窗口
- Ctrl+w p       : 切换到之前窗口

调整窗口大小:
- Ctrl+w +     : 增加高度
- Ctrl+w -     : 减少高度
- Ctrl+w >     : 增加宽度
- Ctrl+w <     : 减少宽度
- Ctrl+w =     : 均衡窗口大小

标签页:
- :tabnew      : 新建标签页
- :tabedit file : 在新标签页打开文件
- gt/gT        : 下一个/上一个标签页
- {n}gt        : 切换到第n个标签页
- :tabclose    : 关闭当前标签页
- :tabonly     : 关闭其他标签页
- :tabs        : 列出所有标签页

预览窗口:
- :pedit file  : 在预览窗口打开文件
- Ctrl+w }     : 在预览窗口显示光标下符号的定义
- :pclose      : 关闭预览窗口

================================================================================
6. 寄存器操作
================================================================================

寄存器类型:
- ""           : 无名寄存器(默认)
- "0-"9        : 数字寄存器(最近删除/复制的内容)
- "a-z         : 小写字母寄存器(用户自定义)
- "A-Z         : 大写字母寄存器(追加到对应小写寄存器)
- "-           : 小黑洞寄存器(单次删除)
- "*           : 系统剪贴板(需要+clipboard支持)
- "+           : 系统剪贴板(同上)
- ".           : 最后插入的文本
- "%           : 当前文件名
- ":           : 最后执行的命令
- "/           : 最后搜索的模式

寄存器操作:
- "{reg}y     : 复制到指定寄存器
- "{reg}p     : 从指定寄存器粘贴
- "{reg}d     : 删除到指定寄存器
- :registers  : 查看所有寄存器内容
- :reg {regs} : 查看指定寄存器

实用技巧:
- 使用不同寄存器保存多个片段,避免覆盖
- 用大写寄存器追加内容:"Ap追加到寄存器a
- 使用系统剪贴板:"+y复制到系统,"+p从系统粘贴

================================================================================
7. 可视化模式
================================================================================

三种可视模式:
- v            : 字符可视模式
- V            : 行可视模式
- Ctrl+v       : 块可视模式

可视模式操作:
- o/O          : 切换选择区域的起点和终点
- gv           : 重新选择上次可视区域
- ESC          : 退出可视模式

块可视模式高级用法:
- 选择矩形区域后进行统一编辑
- I在每行开头插入,A在每行末尾追加
- c替换选中块,r用单个字符替换
- y复制块,d删除块

列编辑示例:
1. Ctrl+v进入块模式
2. 选择多行的同一列
3. 按I输入内容
4. 按ESC应用到所有行

================================================================================
8. 标记与跳转
================================================================================

设置标记:
- m{a-z}       : 设置局部标记(文件内)
- m{A-Z}       : 设置全局标记(跨文件)

跳转到标记:
- '{mark}      : 跳转到标记所在行
- `{mark}      : 跳转到标记精确位置
- ''           : 跳转到上次跳转前的位置
- `.           : 跳转到上次修改的位置

标记列表:
- :marks       : 显示所有标记
- :marks a-z   : 显示指定范围的标记

特殊标记:
- ''           : 上次跳转位置
- `.           : 上次修改位置
- '^           : 上次插入后光标位置
- '[           : 上次修改/复制的开始
- ']           : 上次修改/复制的结束

================================================================================
9. 自动补全
================================================================================

补全模式:
- Ctrl+n       : 关键字补全(下一个)
- Ctrl+p       : 关键字补全(上一个)
- Ctrl+x Ctrl+f : 文件名补全
- Ctrl+x Ctrl+l : 整行补全
- Ctrl+x Ctrl+k : 字典补全
- Ctrl+x Ctrl+] : 标签补全
- Ctrl+x Ctrl+i : 包含文件补全
- Ctrl+x Ctrl+d : 宏定义补全

Omni补全:
- Ctrl+x Ctrl+o : Omni补全(需要语言支持)

补全导航:
- 在补全菜单中:Ctrl+n/p上下选择
- Enter或Ctrl+y : 接受当前选项
- Ctrl+e        : 取消补全

================================================================================
10. 插件管理
================================================================================

流行插件管理器:
- vim-plug     : 轻量级,易于使用
- Vundle       : 老牌插件管理器
- Pathogen     : 简单但功能有限

vim-plug使用:
1. 安装vim-plug
2. 在.vimrc中添加:
   call plug#begin('~/.vim/plugged')
   Plug 'author/plugin-name'
   call plug#end()
3. 运行:PlugInstall安装插件

推荐插件类别:
- 文件导航:NERDTree, vim-finder
- 代码补全:YouCompleteMe, coc.nvim
- 语法检查:ALE, Syntastic
- Git集成:vim-fugitive
- 模糊搜索:ctrlp.vim, fzf.vim
- 代码注释:nerdcommenter
- 括号匹配:vim-surround

================================================================================
11. 自定义配置
================================================================================

.vimrc基础配置:

" 基本设置
set number              " 显示行号
set relativenumber      " 相对行号
set showmode            " 显示模式
set showcmd             " 显示命令
set cursorline          " 高亮当前行
set hlsearch            " 高亮搜索
set incsearch           " 增量搜索
set ignorecase          " 忽略大小写
set smartcase           " 智能大小写

" 缩进设置
set tabstop=4
set shiftwidth=4
set expandtab           " 用空格代替tab
set autoindent          " 自动缩进
set smartindent         " 智能缩进

" 编码设置
set encoding=utf-8
set fileencoding=utf-8

" 备份和交换文件
set backup              " 启用备份
set backupdir=~/.vim/backup
set directory=~/.vim/swap
set undofile            " 持久化撤销

" 状态栏
set laststatus=2        " 始终显示状态栏
set statusline=%f%m%r%h%w%=%l,%c%V%P

" 快捷键映射
nnoremap <C-s> :w<CR>           " Ctrl+s保存
inoremap jj <Esc>               " jj退出插入模式
nnoremap <leader>w :w<CR>       " leader+w保存

折叠设置:
set foldmethod=syntax   " 基于语法的折叠
set foldlevel=99        " 默认展开所有折叠
zo                      " 打开折叠
zc                      " 关闭折叠
zR                      " 打开所有折叠
zM                      " 关闭所有折叠

================================================================================
12. 调试与诊断
================================================================================

内置调试:
- :scriptnames     : 显示已加载的脚本
- :version         : 显示Vim版本和特性
- :messages        : 显示消息历史
- :echo            : 输出表达式值
- :echom           : 输出并记录消息

性能分析:
- :profile start profile.log
- 执行要分析的操作
- :profile stop
- 查看profile.log分析瓶颈

常见问题排查:
- :set verbose=9   : 增加详细输出
- :checkhealth     : Neovim健康检查
- vim --clean      : 无配置启动测试

日志查看:
- ~/.vim/log       : Vim日志(如果配置)
- dmesg | grep vim : 系统级错误

================================================================================
13. 高效工作流
================================================================================

快速文件操作:
- :e {file}        : 编辑文件
- :bn/:bp          : 下一个/上一个缓冲区
- :ls              : 列出缓冲区
- :b {n}           : 切换到第n个缓冲区
- :bd              : 删除缓冲区

会话管理:
- :mksession       : 保存会话
- :source Session.vim : 恢复会话

项目导航:
- :grep pattern *  : 项目中搜索
- :copen           : 打开quickfix窗口
- :cn/:cp          : 下一个/上一个结果

编译与运行:
- :make            : 执行make
- :copen           : 查看编译错误
- :cn              : 跳到下一个错误

终端集成(Neovim/Vim 8+):
- :terminal        : 打开终端
- Ctrl+w N         : 进入终端正常模式
- i                : 返回终端插入模式

远程编辑:
- vim scp://user@host/path/file
- vim ftp://host/path/file

================================================================================
高级组合技巧
================================================================================

1. 链式操作:
   - dw.            : 删除一个单词并重复
   - ci"'text"      : 更改引号内内容为"text"
   - dap            : 删除一个段落

2. 文本对象:
   - iw             : 内部单词
   - aw             : 包含空格的单词
   - is             : 内部句子
   - as             : 包含空格的句子
   - ip             : 内部段落
   - ap             : 包含空格的段落
   - i( / a(        : 圆括号内/包含括号
   - i[ / a[        : 方括号内/包含括号
   - i{ / a{        : 花括号内/包含括号
   - i" / a"        : 双引号内/包含引号
   - i' / a'        : 单引号内/包含引号

3. 过滤器:
   - !{command}     : 过滤选中文本通过命令
   - :%!sort        : 排序整个文件
   - :%!uniq        : 去重
   - :%!jq .        : JSON格式化

4. 外部命令:
   - :!{command}    : 执行外部命令
   - :read !{cmd}   : 读取命令输出到文件
   - :write !{cmd}  : 将文件内容传给命令

5. 快速修复:
   - gf             : 打开光标下的文件名
   - gx             : 打开光标下的URL
   - K              : 查看man手册

================================================================================
学习资源
================================================================================

内置帮助:
- :help            : 主帮助
- :help {topic}    : 特定主题帮助
- :helpgrep pattern : 在帮助中搜索

在线资源:
- vimcasts.org     : Vim视频教程
- vimawesome.com   : Vim插件集合
- Reddit r/vim     : Vim社区

练习网站:
- openvim.com      : 交互式Vim教程
- vim-adventures.com : Vim游戏
- hackerrank vim challenges

书籍推荐:
- 《Practical Vim》by Drew Neil
- 《Learning the vi and Vim Editors》
- 《Modern Vim》by Drew Neil

================================================================================
提示:将常用技巧添加到.vimrc中,逐步建立自己的工作流。
定期回顾和实践新技巧,形成肌肉记忆。
================================================================================

Solvnet Plus    Cadence ASK    SIEMENS(Calibre) Customer Center
回到首页 , 时钟 , 联系信箱:yzbox#163.com(把#换成@) 沪ICP备2026057371号-1 沪公网安备31011702892617号 沪公网安备31011702892617号