linux vim 命令(长文讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 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 → 替换当前行所有 oldnew
:1,5s/old/new/g → 替换第 1 到第 5 行的 oldnew


高级技巧:宏、折叠与配置优化

宏(Macro):录制重复操作

宏功能可录制一组操作并重复执行。例如:

  1. q + a → 开始录制宏到寄存器 a
  2. 执行一系列操作(如删除行、粘贴、移动光标)。
  3. 再次按 q → 结束录制。
  4. @a → 执行宏一次,@@ → 重复上一个宏。

案例
若需将多行文本前缀统一替换为 //,可录制宏 I// Esc j(在行首插入 //,移动到下一行),然后通过 @@ 快速应用到所有行。

折叠(Folding):管理代码结构

对于长文件,折叠功能可隐藏或展开代码块。例如:

  • za → 切换当前折叠的展开/折叠状态。
  • zM → 折叠所有代码块。
  • zR → 展开所有折叠。

自定义配置:.vimrc 文件

通过编辑 ~/.vimrc 文件,可个性化设置 Vim。例如:

set number  " 显示行号  
set tabstop=4  " 将 Tab 视为 4 个空格  
syntax on  " 启用语法高亮  

保存后重启 Vim 即可生效。


实战案例:使用 Vim 编写 Shell 脚本

案例目标

编写一个简单的 Shell 脚本,打印当前日期和时间。

步骤分解

  1. 创建文件
    vim date.sh  
    
  2. 输入代码
    • i 进入插入模式,输入:
      #!/bin/bash  
      echo "当前日期和时间:"  
      date "+%Y-%m-%d %H:%M:%S"  
      
  3. 保存并退出
    • Esc:wq → 回车。
  4. 执行脚本
    chmod +x date.sh  
    ./date.sh  
    

    输出结果:

    当前日期和时间:  
    2023-10-25 14:30:00  
    

结论

Vim 的学习曲线可能让初学者感到挑战,但一旦掌握其核心模式和命令,它将成为 Linux 开发的利器。从基础的移动、删除操作,到高级的宏、正则表达式和自定义配置,Vim 的灵活性和效率远超预期。建议读者通过实际编写代码、修改配置文件等方式反复练习,并逐步探索插件(如 vim-airline)和高级功能,最终实现“无痛编辑”。记住,Vim 的目标不是复杂,而是通过模式切换和命令组合,让每个动作都精准高效——这正是它历经数十年仍被广泛使用的原因。

最新发布