Vim解决问题的方式

news2024/10/7 10:23:21

目录

  • 1 认识 . 命令
  • 2 不要自我重复
  • 3 以退为进
  • 4 执行、重复、回退
  • 5 查找并手动替换

1 认识 . 命令

. 命令让我们重复上次的修改,它是Vim中最为强大的多面手。我们来练习下,如何快速的在vim进行操作,由下图形:
在这里插入图片描述

转成如下图形:
在这里插入图片描述
我们就可以用 . 命令来帮助我们快速执行,具体步骤如下:
(假设我们的光标停留在第一行)

  • j (移动到第二行)
  • >G (从当前行到文档末尾处进行缩进)
  • j (向下继续移动一行(光标到第三行)
  • . (重复上次修改 (等同于>G)
  • j (向下移动一行 (光标到第四行)
  • . (重复上次修改 (等同于>G)

操作完后,就得到我们想要的结果了,用好 . 命令,会让我们高效地完成我们的改动,特别是需要重复执行的操作,. 命令绝对是我们的好帮手。

2 不要自我重复

对于在行尾添加内容这样的常见操作,如添加分号,Vim提供了一个专门的命令,可以把两步操作合并为一步。还是用上面图形举例将下图每行末尾添加一个分号’;':
在这里插入图片描述

如何快速实现呢,记住,不要自我重复!我们按照如下操作就可以实现:
(假设我们的光标在第一行)

  • A;<Esc> : A来代替 $a , $ 将光标移到行尾,a在当前光标之后添加内容,; 插入分号内容,==<Esc>==按下esc键从插入模式进入普通模式
  • j (移动光标到下行)
  • . (重复上次的修改插入;内容)
  • j. (移动光标并且重复上次的修改)

这样,我们就快速给每行的末尾添加了一个分号(若有很多行需要添加分号,这样操作也会是否麻烦,后面还有更高效的命令操作)

如下是几个高效的单键命令用来取代两个或者多个其他命令的组合,在vim命令中会经常用到:

复合命令等效的长命令说明
Cc$从当前光标到行尾内容全部删除
scl删除一个字符
S^C删除整行(dd)
I^i从当前行首进行插入
A$a从当前行尾进行插入追加内容
oA<enter>在当前行后进入插入模式
Oko在当前行上面进入插入模式
sxi(cl)删除当前光标字符再进入插入模式

3 以退为进

我们可以用一种常用的vim操作习惯在一个字符前后各添加一个空格,那怎么高效做呢?假设我们有一行代码如下:
在这里插入图片描述
上述代码将字符串连接起来不美观,所以我们需要在"+"号前后各添加一个空格,让肉眼更容易识别。接下来我们要怎么高效实现呢?操作步骤如下:

  • f+ (命令让vim光标移到下一个字符+所在的位置)
  • s + (先删除光标下的字符,然后进入插入模式,我们输入一个 空格+空格)
  • ; (重复查找上一次f命令所查找的字符)
  • . (重复上一次的修改)
  • ;. (移到到+,再重复上次的修改)
  • ;. (移到到+,再重复上次的修改)

这样我们很高效的达到了我们想要的效果:
在这里插入图片描述

4 执行、重复、回退

在面对重复性工作时,我们需要让移动动作和修改都能够重复,这样就可以达到最佳的编辑模式。我们已经看到 . 命令会重复上次的修改,由于很多操作都被当成一次修改,因此 . 命令已经证明了它的神通广大如果我们知道如何重复之前的操作,而无需每次都输入整条命令,那么就会获得更高的效率。但当不小心做过头时,知道怎么回退会很有帮助。下表中总结了vim中可重复的命令以及相应的回退方式,在多数场景,撤销(undo)都是我们想要使用的命令,难怪我键盘上的u键磨损的这么厉害😁。

目的操作重复回退
做出一个修改{edit}.u
在行内查找下一指定字符f{char}或者t{char};,
在行内查找上一指定字符F{char}或者T{char};,
在文档中查找下一处匹配项/patternnN
在文档中查找上一处匹配项?patternnN
执行一次替换 :s \text{:s} :s/target/replacement&u
执行文本全部替换:%s/target/replacementu

5 查找并手动替换

假设我们想把如下内容里单词"content"替换成"copy":
在这里插入图片描述
我们常用的就是用替换命令解决:
:%s/content/copy/g
但是还可以用另外一种方式,无需输入就能够查找,* 命令,此命令可以查找当前光标下的单词。当光标移到content单词,然后按下 * 命令,就会对所有的content单词高亮,并且跳转到最后一个content,如下图所示:在这里插入图片描述
然后我们可以cw再输入copy进行替换,再按n跳转到下一个,然后 . 命令重复操作。

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

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

相关文章

win10下CH340模块下载stc89c52程序

没想到读研究生了还有水课需要用上51单片机&#xff0c;本科的时候一直是用开发板烧录程序的&#xff0c;这次舍不得花钱买开发板只能瞎折腾了。 准备材料 1.ch340转接板&#xff0c;最普通的那种3~5块钱 2.买的是一个焊接好的小单片机系统 &#xff08;BB一句&#xff0c;这…

内皮细胞生长添加剂(ECGF/ECGS)丨艾美捷解决方案

内皮细胞生长添加剂&#xff08;ECGF/ECGS&#xff09;是一种内皮细胞体外培养不可缺少的补充物质&#xff0c;可以优化细胞的体外生长环境&#xff0c;促进内皮细胞的正常增殖和生长。ECGF/ECGS是一种无菌浓缩&#xff08;100X&#xff09;溶液&#xff0c;含有正常人内皮细胞…

仅5天注册用户超百万,爆火ChatGPT究竟是什么?

作者&#xff1a;qizailiu&#xff0c;腾讯 IEG 应用研究员&#xff0c;来自腾讯技术工程 OpenAI 近期发布聊天机器人模型 ChatGPT&#xff0c;迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动&#xff0c;可以回答问题、承认错误、挑战不正确的前提、拒…

大数据集群HIVESQL经常执行失败问题调查

一、背景 BI集群&#xff0c;有60多个节点&#xff0c;2P数据&#xff0c;机器都已经运行了3年以上 二、现象 提交hive任务会经常失败&#xff0c;有时候能成功&#xff0c;上午失败概率大&#xff0c;下午成功的概率大。 异常日志&#xff1a; 日志1、 2021-09-30 08:28:35.…

攻防世界 easyphp

Easyphp 对于初学者其实一点也不easy哈 打开题目场景 <?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($…

xxljob-core包handler文件夹里面的文件,MethodJobHandler类,让我们自己项目使用,就是将要执行的方法放到人家对象里面

目录 1 handler文件夹2 总结1 handler文件夹 以上是目录结构。 IJobHandler 是一个抽象类,具体的实现类就是impl里面的文件 那这个抽象类里面有什么方法 /*** job handler 任务处理触发器* 就是 要执行哪些代码* 抽象类* @author jing*/ public abstract class IJobHand…

Postgresql源码(93)Postgresql函数内事务控制实现原理(附带Oracle对比)

相关 《Postgresql源码&#xff08;60&#xff09;事务系统总结》 《Postgresql源码&#xff08;93&#xff09;Postgresql函数内事务控制实现原理&#xff08;附带Oracle对比&#xff09;》 0 总结 Postgresql与Oracle都是扁平化处理函数内外的事务控制语句的&#xff1a;即函…

aws eks 节点驱逐和OOMkill

资料 解决 K8s 调度不均衡问题kubernetes pod内容器状态OOMKilled和退出码137全流程解析 集群中pod触发oom的原因 默认pod能够使用节点的全部可用资源。节点的可分配资源如下 Allocatable Node Capacity - &#xff08;kube-reserved&#xff09; - &#xff08;system-res…

Linux基本指令(2)

Linux基本指令(2) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客将展示25-30个LInux中常用的命令&#xff0c;…

计算机网络第9章 无线网络和移动网络

目录 9.1 无线局域网 WLAN 9.1.1 无线局域网的组成 1. 无线局域网 WLAN (Wireless Local Area Network) 2. IEEE 802.11 3. 移动自组网络 9.1.2 802.11 局域网的物理层 9.1.3 802.11 局域网的 MAC 层协议 1. CSMA/CA 协议 2. 时间间隔 DIFS 的重要性 3. MAC两个子层…

fpga实操训练(按键消抖)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们谈到按键输入&#xff0c;其中涉及的功能就是&#xff0c;当按键按下的时候&#xff0c;led灯亮起来。等到按键弹起来的时候&#xff0c;l…

NLP领域表达退化各向异性理解及对应策略总结

前言&#xff1a;今年8月份在与同学撰写deepfake相关论文的过程中偶然听导师提到各向同性与各向异性这两个词&#xff0c;当时以为这是cv领域的概念&#xff0c;回去一查发现是物理领域的&#xff0c;就没再深究。最近看到一篇使用对比学习解决开放式长文本生成中模型退化问题的…

在 Spring Boot 中使用 HikariCP 连接池

目前星标 12K&#xff0c;被使用次数更是达到了 43.1K。再来看看它的自我介绍。 牛逼的不能行啊&#xff0c;原来 Hikari 来源于日语&#xff0c;“光”的意思&#xff0c;这意味着快得像光速一样吗&#xff1f;讲真&#xff0c;看简介的感觉就好像在和我的女神“汤唯”握手一样…

基于SSM的企业管理系统

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

[ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

软件测试面试必看,资深测试工程师面试题集锦 全网首发

全网首发&#xff0c;最牛的全套软件测试 &#xff0c;自动化测试面试题&#xff0c;这些面试题都在文章末尾&#xff0c;有需要的可以自取 废话少说直接开始咱们今天的整体内容&#xff0c; 1.自我介绍&#xff1f; 我是谁、工作几年、你上家公司做什么、负责什么、你的优势…

史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章

史上最全事件相机DVS/Event-based Camera的介绍和分析1. DVS 的一些介绍2. 基于事件的视觉传感器发展现状与趋势3. 事件相机的动态范围&#xff1a;信噪比动态范围DR结论4. 新型相机DVS/Event-based camera的发展及应用应用点传统相机的缺点事件相机的优点5. 事件相机在无人驾驶…

[技巧]还在使用RDP远程windows?OpenSSH远程win10操作系统!

文章目录前言一、Win10开启OpenSSH服务1.1 查看本机是否安装了openssh1.2 下载openssh1.3 查看ssh是否安装1.4 安装openssh服务端1.5 启动openssh服务1.6 查看openssh服务是否启动正常二、开始远程2.1 在目标机器上查看用户名2.2 使用ssh命令远程三、常见问题3.1 ssh命令登陆提…

C# 接口

一 接口 接口&#xff08;interface&#xff09;实际上是一个约定。 如&#xff1a;ICloneable,IComparable; 接口是抽象成员的集合&#xff1b; ICIonable含有方法clone(); IComparable含有方法compare(); 接口是一个引用类型&#xff0c;比抽象类更抽象。 帮助实现多重继承…

配置本地Git从Gitlab上拉取项目

配置本地Git从Gitlab上拉取项目 安装git&#xff1a; https://git-scm.com/downloads git官网下载安装包&#xff0c;安装时一路next即可 ①配置用户名&#xff0c;邮箱 创建一个文件夹&#xff0c;任意位置即可鼠标右键选择&#xff0c;git bash here配置提交人姓名、邮箱 g…