Vim工具使用全攻略:从入门到精通

引言

在软件开发的世界里,Vim不仅仅是一个文本编辑器,它是一个让你的编程效率倍增的神器。然而,对于新手来说,Vim的学习曲线似乎有些陡峭。本文将手把手教你如何从Vim的新手逐渐变为高手,深入理解Vim的操作模式,并掌握一些实用的技巧。

 

Vim的基本概念

Vim,一款自诞生以来就以其强大和灵活性著称的文本编辑器,其独特之处在于它的模式化操作,这也是它与其他编辑器最大的不同。理解Vim的模式对于掌握Vim至关重要。

Vim的工作模式

Vim的工作方式大致可以分为三种基本模式,每种模式下的键入操作都有不同的含义,这三种模式分别是:

  1. 正常模式(Normal Mode):

    • 这是Vim的默认模式。在这个模式下,你可以使用快捷键执行复制、粘贴、移动、删除等操作。这些操作都是基于文本行或字符的,而不是用于输入文本。正常模式是Vim中最强大的模式,因为它提供了许多命令来快速修改文本。
  2. 插入模式(Insert Mode)

    • 在插入模式下,你可以输入文本。这个模式类似于其他文本编辑器的常态。在Vim中进入插入模式的方法有多种,包括但不限于按下i(在光标前插入)、I(在当前行首插入)、a(在光标后插入)、A(在当前行尾插入)、o(在当前行之下新开一行插入)、O(在当前行之上新开一行插入)等。
  3. 末行模式(Command-Line Mode or Last Line Mode)

    • 在末行模式下,你可以输入一些命令,比如保存文件、查找和替换文本、打开新文件或者退出Vim等。这个模式通常用于执行那些影响整个文档的操作。进入这个模式的方法是在正常模式下按下:,然后在屏幕底部的命令行中输入命令。
Vim的其他模式

除了上述三种基本模式外,Vim还有其他一些模式,包括但不限于:

  • 可视模式(Visual Mode)

    • 在这个模式下,你可以用光标选择文本块,然后执行复制、粘贴等操作。进入这个模式的方法是在正常模式下按v(字符选择)、V(行选择)或Ctrl + v(块选择)。
  • 替换模式(Replace Mode)

    • 这个模式允许你替换光标所在位置的字符。进入这个模式的方法是在正常模式下按R,然后每输入一个字符,就会替换掉光标下的字符。
  • 执行模式(Ex Mode)

    • 类似于末行模式,但用于执行更复杂的编辑命令。可以在正常模式下通过输入Q进入。
模式的转换

掌握Vim的关键之一是理解这些模式之间是如何相互转换的。例如,从正常模式进入插入模式可以通过多种方式,而从插入模式回到正常模式则通常是通过按ESC键。

理解并熟练运用这些模式及其转换,是提高在Vim中编辑效率的关键。Vim之所以强大,就在于它能够让用户通过不同的模式和命令组合来实现高效的文本编辑。

2:输入i进入插入模式:

 

此时可以正常输入文本,要想退出我们需要先输入ESC进入命令模式后输入shift+; (也就是:)进入底行模式 然后输入wq即可退出

 Vim的基本操作

掌握Vim的操作几乎等同于掌握了一种新语言。以下是一些基本而重要的操作,它们构成了使用Vim时的基础。

文件操作
  • 打开文件

    • 使用命令vim 文件名来打开或创建文件。如果文件不存在,Vim将会创建一个新文件并等待你的输入。
  • 保存文件

    • 在末行模式下,输入:w保存你的更改。如果你想另存为一个新文件,可以使用:w 新文件名
  • 关闭Vim

    • 要退出Vim并保存更改,可以在末行模式下输入:wq或者:x。如果想退出但不保存更改,可以使用:q!
编辑操作
  • 插入文本

    • 如之前提到的,有多种方式进入插入模式以编辑文本,包括i(光标前插入)、I(行首插入)、a(光标后插入)、A(行尾插入)等。
  • 删除文本

    • 在正常模式下,x可用于删除光标下的字符。dd用于删除整行。如果想删除多行,可以使用d加上数字,例如2dd删除两行。
  • 复制和粘贴

    • yy是复制当前行,p是粘贴到光标后。如果想复制多行,可以使用y加上数字,例如2yy复制两行。
  • 撤销和重做

    • u用于撤销最近的操作,Ctrl + r用于重做被撤销的操作。
移动光标
  • 基本移动h(左移)、j(下移)、k(上移)、l(右移)。
  • 快速移动
    • 0移动到行首,$移动到行尾。
    • w跳到下一个词的开头,b跳回到上一个词的开头。
    • G跳到文件的末尾,gg跳到文件的开头。
    • {}可以在段落之间跳转。
查找与替换
  • 查找文本

    • 在正常模式下,使用/要查找的文本然后按下Enter进行查找。按n查找下一个匹配项,N查找前一个匹配项。
  • 替换文本

    • 在末行模式下,使用:s/原文本/新文本来替换当前行的第一个匹配项。如果想替换所有匹配项,可以使用:s/原文本/新文本/g。要在全文中进行替换,使用:%s/原文本/新文本/g
使用窗口和标签页
  • 分屏

    • :split:sp来水平分割窗口。
    • :vsplit:vsp来垂直分割窗口。
  • 在窗口间切换

    • 使用Ctrl + w加上方向键在窗口间切换。
  • 使用标签页

    • :tabnew打开一个新的标签页,:tabnext:tabprev在标签页之间切换。

挑战话题:如何批量化注释和去注释

首先ctrl + v  进入视图模式

 然后我们可以批量化用键选中,也可以n+shift+g

然后输入shinft+i进入插入模式

 

 最关键一步,此时输入双斜杠 并按两下esc即可批量注释

去注释同理,ctrl+v   选中两列 按L  d即可删除

Vim中的批量化注释

vim配置

vim不是简单的执行可执行程序,也会读取若干配置文件,比如 .vimrc

vim也只是一个执行文件

没有我们就自己创建一个 那么我们就可以将对应配置项写入.vimrc

具体一键配置可以网上搜索,配置好后我们直接使用即可

 

 

通过本篇博客,我们一起踏上了探索Vim这款强大文本编辑器的旅程。从Vim的基本概念、基本操作,到如何批量化注释与去注释的高级技巧,我们一步步深入了解了Vim的强大功能。Vim不仅仅是一个文本编辑器,它是一个提高你编程效率、优化你编码工作流程的强大工具。

Vim之所以独特,是因为它提供了一种与众不同的文本编辑哲学。通过学习Vim的多种模式和快捷键,我们可以实现快速编辑、高效编码的目标。尽管Vim有着陡峭的学习曲线,但一旦你熟练掌握了它的基本及高级操作,你会发现自己能够更快、更高效地完成工作。

记住,熟练使用Vim需要时间和实践。不要因为一开始的挑战而放弃。随着你不断的练习和探索,你会逐渐发现Vim提供的便捷和强大功能。让Vim成为你编程旅程中的忠实伙伴吧!

希望这篇博客能够激发你深入学习Vim的热情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 数据分析(PYDA)第三版(一)

原文:wesmckinney.com/book/ 译者:飞龙 协议:CC BY-NC-SA 4.0 关于开放版本 第 3 版的《Python 数据分析》现在作为“开放获取”HTML 版本在此网站wesmckinney.com/book上提供,除了通常的印刷和电子书格式。该版本最初于 2022 年…

iOS应用提交上架的最新流程

摘要 本篇博客介绍了iOS应用程序上架的最新流程。包括上架基本需求资料、证书的创建和使用、测试设备的添加、描述文件的创建、打包、审核等步骤。 引言 在开发完iOS应用程序后,我们需要将其提交到App Store上架。然而,随着技术的不断发展,…

11.Ubuntu

目录 1. 什么是Ubuntu 1.1. 概述 1.2. Ubuntu版本简介 1.2.1. 桌面版 1.2.2. 服务器版 2. 部署系统 2.1. 新建虚拟机 2.2. 安装系统 2.3. 部署后的设置 2.3.1. 设置root密码 2.3.2. 关闭防火墙 2.3.3. 启用允许root进行ssh 2.3.4. 安装所需软件 2.3.5. 制作快照 …

三种pdf转ppt方法?学会这几招轻松搞定转换

三种pdf转ppt方法?在当今的工作和生活中,PDF和PPT这两种文件格式常常会让我们感到困扰。有时候我们需要将PDF文件转换成PPT格式,以便更好地进行演示或工作汇报。但是,如何快速、准确地完成这项任务呢?本文将为你揭秘三…

引流技术-通过文件中增加联系方式并传播

文章目录 前言文档增加联系方式扩散网盘扩散自建网站借力 注意 前言 很多人在找资料的时候可能都遇到过下图情况: 1、文档最后面留一个自己的联系方式; 2、找的一堆文件中都有相同的情况; 3、一段时间全网搜到的很多相同文件也有这个联系方式…

洞察未来趋势,引领技术革新——2023年全球软件开发大会(QCon上海站)全景解析

在全球科技飞速发展的浪潮中,软件开发行业始终扮演着创新引擎的角色。 作为业界瞩目的年度盛会,2023年全球软件开发大会(QCon上海站)不仅是一场技术交流的嘉年华,更是一次洞察行业趋势、探索未来发展方向的重要平台。…

【Linux】vim的简单使用

我们知道在Windows下的VS2019是一个集成开发环境,也就是说,集编辑,编译,调试等功能都放在了一起;但是在Linux下,这些步骤都是分开的,我们这篇博客就来说一说vim这个编辑器,它只有编辑…

vit细粒度图像分类(十)TransFG学习笔记

1.摘要 细粒度视觉分类(FGVC)是一项非常具有挑战性的任务,它旨在从子类别中识别对象,这是由于类间固有的微妙差异。现有的大部分工作主要是通过重用骨干网络提取检测到的判别区域的特征来解决这一问题。然而,这种策略不可避免地使管道变得复…

搭建k8s集群实战(四)k8s node 资源管理、避免系统无响应

Kubernetes 的节点可以按照 Capacity 调度。默认情况下 pod 能够使用节点全部可用容量。 这是个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,否则它们将与 pod 争夺资源并导致节点资源短缺问题,从而导致系统无响…

回溯法:回溯法通用模版汇总以及模版应用

从一个问题开始 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4] ] 很容易想到 用两个for循环就可以解决。 如果n为100,k为50呢,那就50层for循…

Java中动态修改注解的值

1. 描述 部分场景需要动态修改注解的值。例如,我们使用自定义注解控制接口流量,如果需要动态修改流量值,可以使用反射的方法实现。 2. 步骤 获取注解从注解中获取memberValues属性(map)使用put方法更新对象的值 3. 代码实现 该部分代码主…

MySQL事务原理的分析

1.事务 并发连接下考虑事务。 事务的本质是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。 事务控制语句 ACID特性 原子性:要么都做,要走么都不做。在事务执…

原型中之find()-查找满足条件的第一个元素,并返回该元素的值

array.find(callback(element[, index[, array]])[, thisArg]) callback:必需。要在数组中每个元素上执行的函数。 element:必需。当前正在处理的数组元素。 index:可选。正在处理的元素的索引。 array:可选。调用该方法的数组…

【Java程序设计】【C00247】基于Springboot的农机电招平台(有论文)

基于Springboot的农机电招平台(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的农机电招平台 本系统分为系统功能模块、管理员功能模块、农机机主功能模块以及使用者功能模块。 系统功能模块:农机电招…

电力升级改造,我发现了这种配电柜高效技巧!

在当今数字化和智能化的时代,电力作为企业和机构运转的生命线,其高效、可靠、安全的管理变得尤为重要。 因此,为了应对不断增长的电力需求和提升电力设备的运行水平,配电柜监控系统应运而生。 客户案例 制造业企业 济宁某企业面…

8868体育助力意甲尤文图斯俱乐部 帮助球队签订新合同

意甲的尤文图斯俱乐部是8868合作体育球队之一,根据意大利媒体的消息,尤文图斯已经决定和费德里科-基耶萨续约,这名球员已经开始思考他的将来了。 费德里科-基耶萨今年26岁,他和尤文图斯的合约到2025年6月30号就结束了。他知道很多…

Jmeter 基于Docker 实现分布式测试

基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便,可以省略软件的安装以及配置,比如jdk、jmeter。需要部署多个工作节点可以节省时间。 控制节点(Master-主节…

yo!这里是单例模式相关介绍

目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一(构造函数下手) 2.方法二(析构函数下手) 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中,除了基本…

隐写术:隐藏信息的秘密艺术

一、引言 隐写术,这个充满神秘色彩的词汇,似乎让我们回到了间谍和秘密特工的时代。但实际上,隐写术在现代社会仍然有着广泛的应用,例如在军事、情报、商业等领域。本文将带你走进隐写术的世界,探索它的原理、应用和防…

大模型增量预训练新技巧:解决灾难性遗忘

大家好,目前不少开源模型在通用领域具有不错的效果,但由于缺乏领域数据,往往在一些垂直领域中表现不理想,这时就需要增量预训练和微调等方法来提高模型的领域能力。 但在领域数据增量预训练或微调时,很容易出现灾难性…