vim高级技巧集锦:提升vi编码效率
需积分: 13 85 浏览量
更新于2024-09-11
收藏 93KB DOC 举报
本文档是一份详尽的 Vim 编辑器技巧指南,主要针对已经有一定 Vim 使用基础的人群。Vim 是一个强大的命令行文本编辑器,它在程序员和系统管理员中广受欢迎,因其高效的工作流程和丰富的插件生态系统。以下是一些关键的 Vim 技巧:
1. **复制列**:
- `%s [^ ] +$ &&`: 使用正则表达式复制每一行的最后一列,除了空格。这里的 `[^ ]` 表示所有非空格字符,`+$` 表示从行尾向前直到行结束。
2. **记忆与反向引用**:
- `:s : 2: 1`: 这个例子展示了如何通过冒号操作符 `:` 来记忆模式,将行内的两个字段互换位置。
3. **非贪婪匹配与选项原子**:
- `%s ^ { }pdf new pdf`: 删除字符串中的第一个 `pdf`,`{ }` 表示非贪婪匹配,尽可能少地匹配内容。
4. **可选原子的使用**:
- `%s# <[zy] tbl [a-z] + ># L&gc`: 这个技巧展示了如何使用可选原子 `#` 和 `[zy]`,匹配开头的可选字符,然后替换为小写形式。
5. **跨行操作**:
- `%s < { } >`: 删除多行注释,`<` 和 `>` 用于跨越多行。
6. **特殊搜索模式**:
- `/^joe.*fred.*bill/`: 匹配特定模式,如以 "joe" 开头且 "joe" 到 "fred" 之间至少有一个字符。
- `/^[A-J]\+/`: 搜索包含重复字母 A 到 J 的行。
7. **正则表达式应用**:
- `/fred_.*end`: 多行搜索,匹配包含 "fred" 和 "end" 的行。
- `/fred\|joe`: 或者匹配 "fred" 或 "joe"。
8. **匹配特定结构**:
- `/\<fred\>/i`: 区分大小写的独立单词 "fred"。
- `/\<\d\d\d\d\>`, `\D\d\d\d\d\D`, `\{4\}`: 匹配独立的四位数字的不同方式。
9. **复杂搜索**:
- `/([^0-9]\|^\)%.*%;`: 查找不包含0-9数字或行首的百分号的内容。
- `/^\n\{3}/`: 匹配三行连续的空行。
10. **正则表达式组和重复**:
- `/\(fred\).*\(joe\).*\2.*\1`: 匹配两个字符串重复出现的情况。
11. **视觉模式下的操作**:
- `vmap//y/<C-R>"<CR>`: 映射可视模式下的搜索并粘贴当前选中的文本。
- `vmap<silent>//y/<C-R>=escape(@",'\\/.*$^~[]')<CR><CR>`: 包括空白字符的搜索和粘贴。
12. **`\zs` 和 `\ze` 命令**:
- `/<\zs[^>]*">`: 这个例子展示了如何使用 `\zs` 和 `\ze` 控制搜索起始点和结束点。
这些技巧展示了 Vim 的强大功能和灵活性,熟练掌握它们可以显著提高编辑效率,尤其是在处理文本处理和编程任务时。记住,随着经验的增长,Vim 提供的命令和配置选项可以进一步扩展和自定义以适应个人偏好。
2021-09-29 上传
2015-05-08 上传
107 浏览量
2020-09-15 上传
2014-02-15 上传
2012-04-12 上传
2019-08-10 上传
2015-08-27 上传
freeylin
- 粉丝: 0
- 资源: 4
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫