网站首页 > 技术文章 正文
背景
Vim 是一款流行的、高效的、全屏幕的文本编辑器,它被广泛用于开发、编译、校对和其他与文本相关的工作。Vim 具有强大的功能,如自动完成、跳转、高亮和重复等等,使得用户能够更快速、更高效地进行文本编辑。
上次介绍了 《Vim 图文指南,上手竟和打字一样简单》,虽然 Vim 易于上手,但入门级的可能让广大 IT 朋友不过瘾,这次为大家介绍一些 Vim 进阶方面的内容。
如果觉得文章不错,希望大家点赞、在看和转发。在繁忙的工作同时,祝广大 IT 工程师能自我提升,进一步满足工作需求。
1. N 种模式
首先,vim 编辑器有三种模式,其实不止三种模式,只是为了更好入门,一般介绍三种模式,这里列出四种。
- 一般模式:你打开 Vim 就是一般模式;
- 编辑模式:按 i、a、o 可以进入的模式;
- 命令行模式:按 : 可以进入的模式;
- 可视模式:按 v 即可进入可视模式,一般会组合多个按键使用。
2. 不一样的 Vim
2.1 初始移动
移动光标的方式有多种,除了传统的 h、j、k、l,就是你键盘中间 偏→的4个键。
还有很多会告诉你导航键也是可以的,其实在新手期,建议你禁用上下左右等导航键,还是使用 hjkl 导航更方便。
2.2 初始移动
除了上面的方法,还有更进阶的方法,比如 ^ 是定位到行首,$ 是定位到行尾,e 和 w 都可以定位到词尾,你可以自己试一试这两个的区别,耗子叔专门有篇文章讲过这个。
另外,你还可以试下 viw 和 b,viw 是三个连着一起按,b 是定位到词首,O 是当前行的下方新增一行并进入编辑模式。
b " 定位到词首
viw " 可视模式全选光标所在关键字
上面的一些方法组合起来,日常的 Vim 光标移动就没什么问题了,如果你发现了什么更好的方法,欢迎留言区告诉我。
2.3 退出有几种方式
传说中的老梗,资深程序员也不知道的 Vim 退出方式,其实常见的无外乎几种:
: quit " 命令行模式输哦
: wq " 保存并退出
ZZ " 一般模式下按哦
2.4 拆分屏幕
如果你想分屏的话,可以使用:
: split " 横向拆分
: vsplit " 纵向拆分
日常的一些使用技巧就讲完了,还有很多技巧可以通过翻书、查资料获取,在科普Vim 配置技巧之前,放一张老图。
3、配置初始
Vim 是可配置的,新手有一些常见的配置,简单说可以通过布尔值来改变它的行为:
:set number
:set nonumber
你还可以使用带值的选项,比如::set numberwidth=3
4、映射入门Vim 里的映射无外乎三种,imap、nmap 和 vmap,但由于递归问题,一般在 Vim 里建议使用 noremap,因此上面的三种模式就变成 inoremap\nnoremap\vnoremap。:nnoremap - xx
当然,在 Vim 里按常理说万物皆可映射,但是需要考虑你的按键习惯。
5、甜点时刻
最后,给大家留一份 GPT 生成的 Vim 配置文件,发现 GPT 生成的配置文件逻辑清楚,书写规范,你可以根据自己喜好和需求来配置。
" Vim 配置文件
" 设置文件类型检测
filetype plugin indent on
" 启用语法高亮
syntax enable
" 设置缩进
set tabstop=4 " Tab 键宽度为 4 个空格
set shiftwidth=4 " 自动缩进的空格数
set expandtab " 将 Tab 转换为空格
" 显示行号和状态栏
set number " 显示行号
set relativenumber " 相对行号
set laststatus=2 " 总是显示状态栏
" 搜索设置
set hlsearch " 高亮显示搜索结果
set incsearch " 实时匹配搜索
" 显示设置
set showmatch " 高亮显示匹配的括号
set ruler " 在状态栏显示光标位置
set cursorline " 高亮显示当前行
" 快捷键映射
nnoremap <F5> :w<CR> " 使用 F5 键保存文件
nnoremap <F8> :nohlsearch<CR> " 使用 F8 键取消搜索高亮
" 自定义映射
" 在这里添加你的自定义映射
" 示例:将 <Leader>h 映射为水平拆分窗口
nnoremap <Leader>h :split<CR>
" 插件管理器
" 在这里添加你喜欢的插件管理器,例如 Vundle、Pathogen 或 Vim-Plug
" 自定义插件设置
" 在这里添加你的插件配置,例如主题、代码补全、文件浏览等
" 其他个性化设置
" 在这里添加其他你喜欢的个性化设置,例如颜色方案、缩进规则等
" 结束配置文件
最后,学习并非一蹴而就,有更好的方法,也需脚踏实地,仰望星空。
猜你喜欢
- 2025-07-21 Linux History命令:如何显示命令执行的日期和时间
- 2025-07-21 基于jdk11的Java入门教程-(2)命令行工具
- 2025-07-21 Linux man 命令使用教程(linux的man命令是干嘛用的)
- 2025-07-21 Linux常用场景-VIM文本编辑批量替换
- 2025-07-21 SpringBoot打包到docker(idea+传统方式)
- 2025-07-21 从 0 到 1:使用 Elasticsearch 构建高效的分布式搜索引擎
- 2025-07-21 【干货必备】Linux入门到精通系列课程第6篇:vi/vim编辑器
- 2025-07-21 大模型集成搜索引擎第一步:搭建searXNG本地搜索引擎
- 2025-07-21 Linux内核代码阅读小技巧:提升搜索速度100倍
- 2025-07-21 CentOS 7 系统 vim无法使用——解决方法
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 577℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 514℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 470℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 450℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 448℃MySQL server PID file could not be found!失败
- 最近发表
-
- 宝塔面板Nginx如何提高网站访问速度?
- 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 高并发场景下,Nginx性能如何提升10倍?
- 高并发场景下,Nginx如何抗住千万级流量?
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 深入浅出HTTP压缩技术(http2压缩)
- C程序设计之:1-1/2+1/3-... + 1/n 的和
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)