linux 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+ 小伙伴加入学习 ,欢迎点击围观
前言
在 Linux 系统的开发环境中,Vim 是一款不可或缺的文本编辑器。它以高效、轻量和高度可定制化的特点,成为程序员的“瑞士军刀”。无论是编写代码、修改配置文件,还是快速编辑日志,掌握 Vim 命令都能显著提升开发效率。然而,许多初学者被 Vim 的复杂模式和命令体系所困扰。本文将从零开始,以循序渐进的方式讲解 Vim 的核心功能,结合实际案例和形象比喻,帮助读者逐步掌握这一强大工具。
基础操作:从启动到退出
启动 Vim 的方式
在 Linux 终端中,输入 vim 文件名
即可启动 Vim。例如:
vim hello.txt
如果文件不存在,Vim 会自动创建它;如果文件已存在,会直接进入编辑模式。
三种核心模式
Vim 的核心在于其三种工作模式:普通模式、插入模式和命令模式。这三种模式如同编辑器的“驾驶舱”,需要根据需求灵活切换。
- 普通模式:默认进入的模式,用于执行移动、删除、复制等操作。
- 插入模式:用于输入文本,类似其他编辑器的“编辑”状态。
- 命令模式:通过输入命令执行更复杂的操作,例如保存、退出或搜索。
切换模式的技巧:
- 普通模式 → 插入模式:按
i
键(Insert)。 - 任意模式 → 普通模式:按
Esc
键。 - 普通模式 → 命令模式:按
:
(冒号),光标会跳转到屏幕底部。
移动与基础编辑:在普通模式中高效操作
基本移动命令
在普通模式中,移动光标是编辑的基础。Vim 的移动命令设计得非常高效,例如:
h
→ 左移一格j
→ 下移一行k
→ 上移一行l
→ 右移一格
形象比喻:想象这些方向键是“虚拟键盘”,hjkl
四个字母恰好分布在键盘中间,无需移动手指即可快速操作,如同钢琴家的手指在琴键上流畅移动。
块操作:删除、复制与粘贴
Vim 的强大之处在于对文本块的精准操作。例如:
dd
→ 删除当前行(类似剪切)。yy
→ 复制当前行。p
→ 在光标后粘贴。x
→ 删除光标后的字符。
案例演示:
假设当前文件内容为:
Hello world!
This is a test.
执行 dd
删除第一行后,文件变为:
This is a test.
再执行 yy
复制第二行,移动到文件末尾后按 p
粘贴,最终得到:
This is a test.
This is a test.
插入模式:输入文本的灵活性
插入模式的多种入口
在普通模式下,按 i
可进入插入模式,但 Vim 还提供了其他变体命令,例如:
a
→ 在光标后插入(Append)。o
→ 在当前行下方插入新行(Open)。A
→ 移动到当前行末尾插入。
实际应用:
若想在文件某行末尾添加注释,按 A
直接跳转到行尾,比用 l
键逐字符移动更高效。
插入模式中的特殊操作
在插入模式中,仍可通过组合键快速切换模式。例如:
Ctrl + ]
→ 退出插入模式并回到普通模式。Ctrl + o
→ 临时进入普通模式执行一个命令(例如j
移动光标后,再次按i
返回插入模式)。
命令模式:高级功能与文件管理
保存与退出
在命令模式中,输入以下命令可管理文件:
:w
→ 保存文件(Write)。:q
→ 退出 Vim(Quit)。:wq
→ 保存并退出。:q!
→ 强制退出且不保存(需谨慎使用)。
搜索与替换
Vim 的搜索功能支持正则表达式,极大提升文本处理效率。例如:
/pattern
→ 向下搜索关键词(例如/error
)。n
→ 重复搜索下一个匹配项。%
→ 在普通模式下快速跳转到匹配的括号或引号。
替换命令:
:s/old/new/g
→ 替换当前行所有 old
为 new
。
:1,5s/old/new/g
→ 替换第 1 到第 5 行的 old
为 new
。
高级技巧:宏、折叠与配置优化
宏(Macro):录制重复操作
宏功能可录制一组操作并重复执行。例如:
- 按
q
+a
→ 开始录制宏到寄存器a
。 - 执行一系列操作(如删除行、粘贴、移动光标)。
- 再次按
q
→ 结束录制。 - 按
@a
→ 执行宏一次,@@
→ 重复上一个宏。
案例:
若需将多行文本前缀统一替换为 //
,可录制宏 I// Esc j
(在行首插入 //
,移动到下一行),然后通过 @@
快速应用到所有行。
折叠(Folding):管理代码结构
对于长文件,折叠功能可隐藏或展开代码块。例如:
za
→ 切换当前折叠的展开/折叠状态。zM
→ 折叠所有代码块。zR
→ 展开所有折叠。
自定义配置:.vimrc 文件
通过编辑 ~/.vimrc
文件,可个性化设置 Vim。例如:
set number " 显示行号
set tabstop=4 " 将 Tab 视为 4 个空格
syntax on " 启用语法高亮
保存后重启 Vim 即可生效。
实战案例:使用 Vim 编写 Shell 脚本
案例目标
编写一个简单的 Shell 脚本,打印当前日期和时间。
步骤分解
- 创建文件:
vim date.sh
- 输入代码:
- 按
i
进入插入模式,输入:#!/bin/bash echo "当前日期和时间:" date "+%Y-%m-%d %H:%M:%S"
- 按
- 保存并退出:
- 按
Esc
→:wq
→ 回车。
- 按
- 执行脚本:
chmod +x date.sh ./date.sh
输出结果:
当前日期和时间: 2023-10-25 14:30:00
结论
Vim 的学习曲线可能让初学者感到挑战,但一旦掌握其核心模式和命令,它将成为 Linux 开发的利器。从基础的移动、删除操作,到高级的宏、正则表达式和自定义配置,Vim 的灵活性和效率远超预期。建议读者通过实际编写代码、修改配置文件等方式反复练习,并逐步探索插件(如 vim-airline
)和高级功能,最终实现“无痛编辑”。记住,Vim 的目标不是复杂,而是通过模式切换和命令组合,让每个动作都精准高效——这正是它历经数十年仍被广泛使用的原因。