vim使用(长文讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言
在编程世界中,Vim 是一款令人又爱又恨的工具。它像一把瑞士军刀,功能强大却需要时间磨合。对于编程初学者而言,Vim 的命令行式操作可能显得陌生;而对中级开发者来说,Vim 的高效性与灵活性则是提升编码效率的核心工具。本文将从零开始,用循序渐进的方式讲解 Vim 使用 的核心技巧,结合实际案例和代码示例,帮助读者跨越学习门槛,逐步掌握这一经典编辑器的精髓。
基础操作入门:从启动到退出
启动与模式切换
启动 Vim 的最简单方式是通过命令行输入 vim 文件名
。例如,vim hello.py
将打开或新建一个名为 hello.py
的文件。Vim 的独特之处在于其 模式化操作:
- 正常模式(Normal Mode):默认模式,用于移动光标、执行命令。
- 插入模式(Insert Mode):输入文本的模式,通过按
i
、a
等键进入。 - 命令模式(Command Mode):以
:
开头的命令行界面,用于保存、退出等操作。
比喻:可以把 Vim 比作地铁系统,正常模式是站台,命令模式是控制中心,而插入模式是车厢——只有切换到正确的位置,才能完成目标操作。
移动光标:比鼠标更快的方式
在正常模式下,Vim 的移动命令远比鼠标高效:
h
、j
、k
、l
:分别对应左、下、上、右移动(想象这四个键在键盘上形成一个方向盘)。0
和$
:跳转到行首和行尾。gg
和G
:跳转到文件开头和结尾。
案例:
10G
e
编辑文本:插入、删除与复制
- 插入文本:按
i
在光标前插入,按a
在光标后插入,按o
在下一行新建行。 - 删除操作:
x
删除光标后的字符,dd
删除整行,dw
删除一个单词。 - 复制与粘贴:
yy
复制当前行,p
粘贴到光标后。
技巧:在命令前加数字可批量操作,例如 5dd
删除 5 行,3yy
复制 3 行。
保存与退出:常见的退出场景
Vim 的退出命令常让新手困惑:
:w
:保存文件但不退出。:q
:退出文件(仅当未修改时生效)。:wq
:保存并退出。:q!
:强制退出且不保存。
实战场景:
:wq
:q!
高级功能详解:提升效率的关键
正则表达式与搜索
Vim 的搜索功能结合正则表达式,能快速定位和替换文本:
/关键词
:向下搜索关键词,按n
继续向下,N
向上。:%s/old/new/g
:替换全文中的“old”为“new”(g
表示全局替换)。
案例:
:%s/apple/banana/g
宏命令:重复操作的自动化
宏(Macro)可录制并重复一序列操作:
- 按
q
后跟一个字母(如a
)开始录制。 - 执行一系列操作(如删除、替换)。
- 按
q
结束录制。 - 输入
@a
执行宏,@@
重复上次宏操作。
比喻:宏如同录制一段“操作录像”,能将重复性任务自动化,节省大量时间。
窗口与标签页:多文件协同
Vim 支持多窗口和标签页管理:
:split
或:vsplit
:水平或垂直分割窗口。:tabe 文件名
:打开新标签页。Ctrl + W
+ 方向键:在窗口间切换。
案例:
:vsplit main.py
配置优化:打造个性化工作流
自定义配置文件(.vimrc)
Vim 的配置文件 .vimrc
可存放个性化设置,例如:
" 设置行号
set number
" 设置缩进为 4 空格
set tabstop=4
" 开启高亮搜索
set hlsearch
插件管理:扩展 Vim 的功能
通过插件管理工具(如 vim-plug
)可安装插件增强功能:
- 安装
vim-plug
:curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 在
.vimrc
中配置插件:call plug#begin('~/.vim/plugged') Plug 'scrooloose/nerdtree' # 文件管理插件 Plug 'neoclide/coc.nvim' # 代码补全 call plug#end()
- 输入
:PlugInstall
安装插件。
快捷键优化:减少重复劳动
自定义快捷键可提升操作效率:
" 将“保存并退出”绑定到 F2
nnoremap <F2> :wq<CR>
" 快速跳转到上次编辑位置
nnoremap <C-o> :normal! ``<CR>
实战案例:用 Vim 编写 Python 脚本
场景描述
假设需要编写一个简单的 Python 脚本 calculator.py
,实现加减乘除功能。
步骤分解
-
启动 Vim 并新建文件:
vim calculator.py
-
进入插入模式并编写代码:
按i
进入插入模式,输入以下代码:def add(a, b): return a + b
-
保存并退出:按
Esc
键回到正常模式,输入:wq
保存退出。 -
修改代码并使用宏:
假设需为其他运算函数添加注释:- 录制宏:
qa
(开始录制),输入注释内容后按Esc
,移动到下一行,q
(结束录制)。 - 执行宏:
@a
即可重复操作。
- 录制宏:
-
搜索与替换:
若需将所有def
替换为def function_
::%s/def /def function_/g
结论
Vim 的学习曲线虽然陡峭,但掌握其核心功能后,它将成为开发者提升效率的利器。从基础的移动与编辑,到高级的宏命令和插件配置,每一层技巧都能显著缩短编码时间。本文通过案例演示、代码示例和形象比喻,帮助读者逐步理解 Vim 使用 的逻辑与优势。记住,熟练操作需要持续练习——就像学习驾驶汽车,最初可能手忙脚乱,但一旦掌握方向盘,就能在代码世界中自由驰骋。