当前位置: 首页 > news >正文

深入了解 Vim 编辑器:从入门到精通

文章目录

    • 深入了解 Vim 编辑器:从入门到精通
      • 一、Vim 的三个基本模式
        • 1. 普通模式(Normal Mode)
        • 2. 插入模式(Insert Mode)
        • 3. 命令模式(Command Mode)
      • 二、常用快捷键
        • 光标移动
        • 删除操作
        • 复制和粘贴
        • 撤销和重做
      • 三、文件操作与搜索
        • 文件操作
        • 搜索文本
        • 替换文本
      • 四、Vim 的进阶功能
        • 多文件编辑
        • 分屏功能
        • 标签页
        • 查看帮助
      • 五、总结

深入了解 Vim 编辑器:从入门到精通

Vim 是一个强大的文本编辑器,广泛应用于程序开发、系统管理等领域。它基于 Vi 编辑器,具备了许多扩展功能。Vim 的最大优势是高效,尤其适用于在终端环境下进行编码和编辑文本。虽然 Vim 有一定的学习曲线,但掌握了其基本命令后,你会发现它能够显著提升工作效率。

这篇博客将带你深入了解 Vim 的使用,从基础命令到进阶技巧,帮助你更加熟练地使用 Vim 进行文本编辑。

一、Vim 的三个基本模式

Vim 有三个主要的工作模式:普通模式(Normal Mode)、插入模式(Insert Mode)和 命令模式(Command Mode)。理解并掌握这三种模式是高效使用 Vim 的关键。

1. 普通模式(Normal Mode)

普通模式是 Vim 启动时的默认模式。在这个模式下,你不能直接输入文本,而是执行光标移动、删除、复制、粘贴等命令。

  • 切换到插入模式:按 i(在光标前插入)、I(行首插入)、a(在光标后插入)、A(行尾插入)等进入插入模式进行文本输入。

  • 光标移动

    • h:光标左移一个字符
    • j:光标下移一行
    • k:光标上移一行
    • l:光标右移一个字符
    • w:跳到下一个单词的开头
    • b:跳到当前单词的开头
    • 0:跳到当前行的开头
    • $:跳到当前行的结尾
  • 删除操作

    • x:删除光标所在的字符
    • dw:删除从光标位置到单词结尾的内容
    • dd:删除光标所在的整行
    • d$:删除从光标到行尾的内容
  • 复制与粘贴

    • yy:复制当前行
    • 2yy:复制当前行及下一行
    • p:在光标后粘贴复制的内容
    • P:在光标前粘贴复制的内容
  • 撤销与重做

    • u:撤销上一个操作
    • Ctrl + r:重做上一个撤销的操作
  • 查找文本

    • /关键词:查找下一个匹配的关键词
    • ?关键词:查找上一个匹配的关键词
    • n:跳转到下一个匹配
    • N:跳转到上一个匹配
  • 替换文本

    • :s/old/new/:替换当前行的第一个 oldnew
    • :s/old/new/g:替换当前行的所有 oldnew
    • :%s/old/new/g:替换整个文件中的所有 oldnew
2. 插入模式(Insert Mode)

插入模式是 Vim 用于输入文本的模式。在插入模式下,你可以像在其他文本编辑器中一样输入文本。

  • 切换到插入模式

    • i:在光标前插入文本
    • I:在当前行的开头插入文本
    • a:在光标后插入文本
    • A:在当前行的末尾插入文本
    • o:在当前行下方插入新行
    • O:在当前行上方插入新行
  • 退出插入模式:按 Esc 键退出插入模式,回到普通模式。

3. 命令模式(Command Mode)

命令模式允许你执行文件操作,如保存、退出、查找、替换等。在命令模式下,输入以冒号(:)开始的命令。

  • 保存文件

    • :w:保存文件,但不退出 Vim
    • :w filename:将文件保存为指定名称
  • 退出 Vim

    • :q:退出 Vim(如果文件没有修改)
    • :q!:强制退出 Vim,不保存修改
    • :wq:保存并退出
    • ZZ(大写的 ZZ):保存并退出
  • 查找和替换

    • :s/old/new/:替换当前行的第一个 oldnew
    • :s/old/new/g:替换当前行的所有 oldnew
    • :%s/old/new/g:替换整个文件中的所有 oldnew
  • 跳转到特定行

    • :n:跳转到第 n
    • :1:跳转到文件的第一行
    • :$:跳转到文件的最后一行

二、常用快捷键

光标移动
  • h:左移一个字符
  • j:下移一行
  • k:上移一行
  • l:右移一个字符
  • w:移动到下一个单词的开头
  • b:移动到当前单词的开头
  • 0:跳到行首
  • $:跳到行尾
删除操作
  • x:删除光标所在的字符
  • dw:删除光标所在位置到单词末尾的内容
  • dd:删除光标所在的整行
  • d$:删除光标到行尾的内容
复制和粘贴
  • yy:复制当前行
  • 2yy:复制当前行和下一行
  • p:粘贴到光标后
  • P:粘贴到光标前
撤销和重做
  • u:撤销上一个操作
  • Ctrl + r:重做上一个撤销的操作

三、文件操作与搜索

文件操作
  • 新建文件:在命令行中输入 vim filename 新建并编辑一个文件。

  • 保存文件

    • :w:保存文件
    • :w filename:将文件保存为另一个名称
  • 退出文件

    • :q:退出文件,如果文件没有更改
    • :q!:强制退出,不保存更改
    • :wq:保存并退出
搜索文本
  • /:向下搜索
  • ?:向上搜索
  • n:跳转到下一个匹配
  • N:跳转到上一个匹配
替换文本
  • :s/old/new/:替换当前行的第一个 oldnew
  • :s/old/new/g:替换当前行的所有 oldnew
  • :%s/old/new/g:替换整个文件中的所有 oldnew

四、Vim 的进阶功能

Vim 不仅仅是一个文本编辑器,它还提供了一些强大的功能来提高工作效率。

多文件编辑

Vim 允许你同时编辑多个文件,可以通过以下命令切换文件:

  • :e filename:打开并编辑一个新文件
  • :bnext:切换到下一个文件
  • :bprev:切换到上一个文件
  • :b#:切换到上次编辑的文件
分屏功能

Vim 提供了强大的分屏功能,可以同时查看多个文件或同一个文件的不同部分。

  • :split:水平分屏
  • :vsplit:垂直分屏
  • Ctrl + w + 方向键:在多个分屏中切换
标签页
  • :tabnew:创建一个新的标签页
  • :tabnext:切换到下一个标签页
  • :tabprev:切换到上一个标签页
查看帮助

Vim 有详细的帮助文档,可以帮助你查找命令的使用方法。

  • :help:查看帮助
  • :help command:查看指定命令的帮助

五、总结

Vim 是一个非常强大、灵活的文本编辑器,适合用来处理各种文本文件,尤其是编程和系统管理中的任务。通过掌握基本的命令和技巧,你将能够高效地编辑文件并提升你的工作效率。

虽然 Vim 的学习曲线较陡,但它的高效性和强大功能是值得你投入时间和精力去学习的。掌握了 Vim,你将能在命令行环境下游刃有余地处理文件,提升你的编程技能和工作效率。

http://www.lryc.cn/news/584122.html

相关文章:

  • 学习中断配置的一天(第五天)
  • 《PyQt6-3D:开启Python 3D编程新世界 2》
  • Spring Boot中的中介者模式:终结对象交互的“蜘蛛网”困境
  • Synopsys 逻辑综合之 MultiBit Flip-Flop 与 ICG
  • SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
  • 深度学习-正则化
  • 小架构step系列10:日志热更新
  • B2、进度汇报(— 25/06/16)
  • 【运维架构】云计算运维架构师与基础设施,技术路线,Linux证书(标准化/定制化/CNCF,公有云/混合云/私有云)
  • Tomcat:Java Web应用的幕后英雄
  • linux 4.14 kernel屏蔽arm arch timer的方法
  • 防抖在vue中应用
  • Vue前端面试常问问题详解
  • Python-GEE遥感云大数据分析与可视化(如何建立基于云计算的森林监测预警系统)
  • 多元函数的切平面与线性近似:几何直观与计算方法
  • 在指定conda 环境里安装 jupyter 和 python kernel的方法
  • django中如何使用Django REST Framework
  • 网络安全基础概念以及虚拟环境的搭建
  • 快速将照片从三星手机传输到电脑
  • 保姆级搭建harbor私有仓库与docker-ce教程与使用教程
  • JAVA面试宝典 -《Spring IOC核心:Bean生命周期全解析》
  • [论文阅读]LLMZip: Lossless Text Compression using Large Language Models
  • 【论文阅读】Defensive Few-shot Learning
  • RocksDB 与 ZenFS:原理、特性及在科研与工程中的应用初步探索
  • 微调性能赶不上提示工程怎么办?Can Gradient Descent Simulate Prompting?——论文阅读笔记
  • [论文阅读]Text Compression for Efficient Language Generation
  • FreeRTOS移植
  • 零成本获取 SSL 证书攻略?
  • 【论文笔记】A Deep Reinforcement Learning Based Real-Time Solution Policy for the TSP
  • 如何处理mocking is already registered in the current thread