程序开发工具vim——vi的高级版本(记得收藏)

news2024/12/28 3:05:23

  提示:在学习本文知识的时候记得温故一下文本编辑器vi的知识点:文本编辑器vi看这篇就够了因为目前大部分的Linux发行版都以vim替换vi的功能了,所以学习vi也很必要。


一.vim的缓存、恢复与打开时的警告信息

  目前主要的文本编辑器都会有恢复的功能,vim也有恢复功能(防止宕机而导致数据没有进行保存)。当我们在使用vim进行编辑时,vim会在与被编辑的文件的目录下,再建立一个名为.filename.swp的缓存文件
  当我们进入到vim的一般命令模式下按下组合键Ctrl+z时,你的vim就会被丢到后台去执行,并且会创建一个上述的缓存文件。
  当在vim的一般命令模式下,按下Ctrl+z后会显示如下的信息
在这里插入图片描述
  当我们使用ls-al的命令后发现在该目录下多了一个.test.txt.swp的文件如下:
在这里插入图片描述
  当我们再一次使用vim编辑test.txt时,会出现以下信息,这是和第一次完全不一样的:
在这里插入图片描述
  当我们在该状态下按键盘的方向键(下方向键)按两下(其他键也可以这里不绝对),会出现下面的状态:
在这里插入图片描述
  红色方框中的信息提示,该文件的缓存文件已经存在,最下面一行提示你可以进行的操作,具体功能如下:
  [O]pen Read-Only:打开此文件为只读文件,可以用在你只是想要查看该文件内容并不想要进行编辑操作时。
  [E]dit anyway:还是用正常的方式打开你要编辑的那个文件,并不会加载缓存的内容,不过很容易出现两个用户互相改变对方的文件等问题(由于Linux是多人多任务的环境)。
  [R]ecover:就是加载缓存的内容,用在你要救回之前未保存的工作,不过当你救回并且保存退出vim后,还是要手动自行删除那个缓存。
  [Q]uit:按下“q”就退出vim,不会进行任何操作回到命令提示符。
  [A]bort:和[Q]uit的操作非常类似,也是回到命令提示符。


二.vim的可视区块(Visual Block)

  在以往我们在文本编辑器vi中基本都是以行为单位进行的操作,但是如果我们想要搞定一个区块(也就是以列为操作单位),该如何进行?在vim中就满足了这样的需求,其使用可视区块。当我们按下“v”、“V"、或"[Ctrl]+v"时(指的是在一般命令模式下),光标移动过的地方就开始反白。
在这里插入图片描述
  当我们在vim的一般命令模式下输入小写“v”键,会出现如下状态信息:
在这里插入图片描述
  当我们在vim的一般命令模式下输入大写“V”键,会出现如下状态信息:
在这里插入图片描述
  当我们在vim的一般命令模式下按下“[Ctrl]+v”键,会出现如下状态信息:
在这里插入图片描述
  根据需求选择区块后就可以进行复制、删除或粘贴了,单纯这一点就可以看出vim相比于vi具有更强大的功能。


三.vim的多文件编辑

  在文本编辑器vi中我们可以在一般命令模式下使用“:r filename”来读入某个文件的内容(在vi那篇博客中我只列出了常用的命令)
在这里插入图片描述
  现在我们想将文件TEST.txt的内容读入到文件test.txt光标处可以使用上诉指令如下:
在这里插入图片描述
  读入后显示如下:
在这里插入图片描述
  说了那么多的目的是什么呢,其实是想引入在vim中的多文件编辑。在vim中可以从某个文件进入到另外一个文件,也可以将另一个文件中的内容选择性复制到某个文件中…。而在vi中只能将某个文件的内容全部导入到本文件,而有些内容往往又不是我们所需要的。多文件编辑的按键如下,注意都是在一般命令模式下进行的操作:
在这里插入图片描述
  在命令提示字符使用vim同时打开两个文件如下:
在这里插入图片描述
  在一般命令模式下使用“:files”查看目前开启的所有文件如下:
在这里插入图片描述
  在一般命令模式下使用“:n”就可以进入下一个文件如下;
在这里插入图片描述
  当然我们也可以在一个文件中直接使用按键进入另一个文件如下:
在这里插入图片描述
  vim的多文件编辑很方便地让我们在各个文件之间跳转自如,不管是查看、复制、删除还是粘贴操作。


四.vim的多窗口功能

  现在假设我们有两个需求:1.当我们有一个很大的文件,我们现在想要对照文件前面与后面的数据,但是我们不想使用[Ctrl]+f与[Ctrl]+b功能键,该如何操作?2.现在我有两个需要对照着看的文件,但是我不想使用vim的多文件编辑,该如何操作?
  vim也能够实现划分窗口:如果想要在新窗口启动另一个文件,就加入文件名“:sp filenam”,否则仅输入“:sp”,出现的则是同一个文件在两个窗口间。
  如果我们想要同一个文件的两个窗口,可以如下操作:
在这里插入图片描述
在这里插入图片描述
  如果我们想要不同文件的两个窗口,可以通过如下操作:
在这里插入图片描述
在这里插入图片描述
  当我第一次玩vim的划分窗口时,非常激动,竟然有这种功能,太有趣了。
  对于vim的多窗口情况下的按键功能有很多,但是我将最主要使用的几个总结如下,以方便查阅:
在这里插入图片描述
  vim的笔记总结差不多到这里为止(虽然很简陋),目的也很简单,方便查阅。对于Linux的学习,大家都一定要自己动总结手敲一敲,敲多了,使用多了,就慢慢掌握了。
  最后如果文章有不对的地方,希望大家指出,我会第一时间纠正。❤️ ❤️


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

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

相关文章

一篇博客告诉你什么是时间复杂度和空间复杂度(没有基础也能看懂)(这是学习数据结构及算法所必须掌握的基础)

目录 0.前言 1.算法的复杂度简述 2.时间复杂度 2.1 什么是时间复杂度 2.2 大O表示法 2.2.1 例一 2.2.2 大O表示法规则 2.2.3 例二 2.2.4 例三 2.2.5 例四 2.2.6 例五 2.2.7 例六 2.2.8 例七 2.3 时间复杂度计算总结 3.空间复杂度 3.1 空间复杂度的量度 3.2 例一…

可行性研究

可行性研究可行性研究:分析和设计的压缩和简化,在高层抽象进行系统的分析和设计目的:最小代价在尽可能短的时间确定问题能否解决分析过程:可行性方面:步骤:系统流程图:用图形符号以黑盒形式描绘系统部件:表述数据流动情况数据流图:(DFD) 描绘信息和数据流的流动和处理逻辑画法:…

如何将C/C++代码转成webassembly(Linux环境)

如何将C/C代码转成webassembly_omage的博客-CSDN博客学习如何将C/C代码转成webassemblyhttps://blog.csdn.net/omage/article/details/128163526?spm1001.2014.3001.5501 上篇笔者分享了在window环境下如何将C/C代码编译成webassembly,当中用了非常简单的C代码…

避免踩坑的Github学生认证申请教程

避免踩坑的快速Github学生认证申请教程 直接上干货! 踩坑在于: 用了校卡以及在线验证报告无法通过Github学生认证, 需要用英文版的在线验证报告(网页版翻译就可以)的截图点击upload(无需拍照)&a…

【信息检索与数据挖掘期末复习】(五)Language Model

什么是语言模型? 一个传统的语言生成模型可以用于识别或生成字符串 我们可以将有穷自动机看作是一种确定性的语言模型 基本模型:每一个文档都是通过一个像这样的自动机生成的,只不过这种自动机是有概率的 一种最简单的语言模型等价于一个…

阿拉伯糖偶联核苷酸,UDP-b-L-arabinopyranose disodium salt,UDP-β-L-Ara.2Na

产品名称:阿拉伯糖偶联核苷酸 英文名称:UDP-b-L-arabinopyranose disodium salt,UDP-β-L-Ara.2Na CAS号:15839-78-8 分子式:C14H22N2O16P2 分子量:536.27600 纯度:98% 规格:1mg …

从零开始的Linux 阿里云ECS服务器搭建、FileZilla和宝塔

云服务器ECS概述 云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS级别云计算服务,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,免去了您采购IT硬件的前期准备&#x…

会员一卡通是什么?

昨天我们讨论了收银系统和给公众号的联合使用,最大的功能就是实现会员卡电子化、双方可以互动交流、会员账号信息随时可查看,但如果店铺比较小,不愿意花时间经营公众号或者小程序,那么还有什么办法做到电子会员卡呢? 会员一卡通可…

Java9-17新特性一览,了解少于3个你可能脱节了

前言 Java8出来这么多年后,已经成为企业最成熟稳定的版本,相信绝大部分公司用的还是这个版本,但是一眨眼今年Java19都出来了,相信很多Java工程师忙于学习工作对新特性没什么了解,有的话也仅限于某一块。 本篇就是博主对…

基于N32G45的OLED驱动

基于N32G45的OLED驱动 基于N32G45硬件SPI驱动OLED屏幕1.OLED简介 OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用…

RPC模型

这里写目录标题1. 简介2. RPC有理函数模型3. 优秀的RPC相关知识博文3.1 RPC和RPB文件相关信息3.2 Matlab实现RPC正算反算3.3 使用Gdal进行批量的影像RPC正射校正3.4 (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现3.5 高分影像批处理第…

感知算法工程师面试===目标检测===YOLO V4(改)

感觉V3 到V4,YOLO的整体架构并没有重大的改进,只是增加了很多的trick 先展示一下V4的整体网络结构 ↑\uparrow↑这个是对比V3的 如图可见,V4的结构依然是主干网络金字塔头部检测器,所有的改进都是为了更好更快的检测目标。 ↑\…

02-SpringBoot基础

一、回顾 二、知识目标 SpringBoot概述【了解】 SpringBoot快速入门【掌握】 SpringBoot启动原理【重点】 SpringBoot配置文件【掌握】 SpringBoot属性注入【掌握】 三、为什么使用SpringBoot? -SSM开发有哪些痛点? 1、在早期我们都是使用的是SSM来…

web前端期末大作业:美食网站设计与实现——HTML+CSS+JavaScript休闲美食餐饮公司网站静态模板(6个页面)

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

POI在指定excel插入行java

我想在第三行&#xff0c;插入数据库的数据&#xff0c;这里假如数据库有10条&#xff0c;并且继承第二行的格式 数据库数据 {"clark",25}&#xff0c;我写个json对象&#xff0c;10条这个 造数据代码 JSONArray jsonArray new JSONArray();for (int i 0; i <…

Mac 安装mysql8.0

1. 确认下载的版本 并下载dmg文件 官网下载dmg安装文件 &#xff0c;查看自己电脑用的是什么芯片 选择对应版本的安装包&#xff0c;终端命令&#xff1a; uname -a 参考&#xff1a;http://www.yaotu.net/biancheng/13817.html 系统偏好设置里是 英特尔的i7处理器 并且查询…

可观测性-Metrics-Tomcat连接数、线程数理解以及压测记录

文章目录背景原理压测5个并发压测10个并发压测60个并发压测61个并发压测背景 为了搞懂Tomat的连接线程模型&#xff0c;搞清楚每个配置参数的作用&#xff0c;实际压测看一下是否与预期一致。 Tomcat配置如下&#xff1a; server:# tomcat配置tomcat:# 允许最大连接数,默认8…

磁盘和文件系统管理(一)

检测并确认新硬盘 fdisk命令 查看或管理磁盘分区 fdisk -l [磁盘设备] 或 fdisk [磁盘设备] 交互模式中的常用指令 m、p、n、d、t、w、q d delete a partition * 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l…

Java - Object#finalize在JDK9中被标记废弃了!

Java - Object#finalize在JDK9中被标记废弃了&#xff01; 时间&#xff1a;2022年12月6日01:34:10 目录&#xff1a; ① 为什么要废弃&#xff1f; ② 废弃后&#xff0c;使用什么方式主动监测对象是否被回收&#xff1f; 一、为什么要废弃&#xff1f; ⚡注意&#xff1a;废…

ChatGPT成精了!

最近几天&#xff0c;朋友圈、公众号都被 ChatGPT 刷屏了。 更有不少标题党吹嘘 “谷歌要完&#xff0c;百度也危了”。 那么它到底有没有网上吹的这么神奇呢&#xff1f; 我亲测了一把&#xff0c;感觉确实非常惊艳&#xff01; 例如&#xff1a; 看着还不错&#xff0c;每…