Linux操作系统 ------(3.文本编译器Vim)

news2024/11/5 12:18:36

目录

1.前言

2.本章学习目标

3.vim的三种工作模式

3.1一般模式‌

3.2编辑模式‌

3.3命令行模式‌

4.运行vim

5.vim 不同工作模式下的常见命令

6.一般模式下的功能键

6.1移动光标类

6.2删除、复制和粘贴类

6.3查找替换类

7.从一般模式进入编辑模式

8.命令行模式下的功能键

9.文件救援和高级功能

10.文件救援

11.多窗口编辑

11.1单个文件分屏编辑

11.2多个文件分屏编辑

11.3关闭分屏

12.多文件编辑

13.块选择(Visual Block)

14.总结


1.前言

上篇博客我们介绍了Shell的常用命令,这次博客我们接着继续学习下一个章节:3.文本编译器Vim


2.本章学习目标

掌握vim的三种工作模式。

掌握一般模式下的快捷键。

掌握命令行模式下的快捷键。

熟悉Linux的文件救援和高级功能


Vim是一种命令行界面下的文本编辑器。在早期的Unix操作系统中都是使用vi作为系统默认的编辑器的。vim‌就是vi的升级版,vim和vi的区别在于,当我们在编辑一个文本的时候,文本内容在vi中显示为黑白色,而在vim中会显示彩色。此外,vim还能够进行诸如shell脚本,C语言源程序,JAVA等程序编辑功能,使用vim能帮助程序员更容易找出源程序中的语法错误,因此可以将vim视为一种程序编辑器。默认情况下,openEuler 22.03 LTS SP3(是一种国产的操作系统,它的下载和虚拟机的配置详见这个博主的文章Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置-CSDN博客)支持vi和vim命令。

那么vim到底是怎么工作的呢?首先来了解一下vim的工作模式。vim的工作模式有三种,分别是一般模式(也称指令模式)、编辑模式和命令行模式。


3.vim的三种工作模式

3.1一般模式‌

一般模式有时也称为指令模式。当使用一条命令 vim  filename 打开一个文件时,进入该文件就是一般模式了。

3.2编辑模式‌

在一般模式下,不可以修改文档字符,只能进入编辑模式后,才可以进行修改操作。那么,如何从一般模式切换到编辑模式呢?

可以按下“i、I、a、A、o、O”这6个键中的任意一个。此时,屏幕的最后一行会出现“-- 插入 --”字样,即进入了编辑模式。如果只需要进行替换操作,则可以按下“r”或者"R"键,此时屏幕的最后一行会出现“-- 替换 --”字样。

修改完毕,从编辑模式返回到一般模式,按一下键盘左上方的Esc键即可。

3.3命令行模式‌

在一般模式下,当输入 “:”(冒号),就进入了命令行模式。

vim 三种工作模式之间的转换关系如图3-1所示。

                                                图3-1vim三种工作模式的转换关系图

4.运行vim

在终端中输入vim filename命令,然后按回车键,就进入vim的一般模式了。如果当前目录中存在这个文件,则打开该文件;如果不存在这个文件,则新建文件,因此,该命令无论什么时候都不会报错。

上面讲解了vim的3种工作模式以及它们之间的转换关系。下面举个简单的例子让大家加深印象,要求是使用vim命令创建一个文本文件test.txt,并在其中写入一段文字,然后进行保存,最后退出vim。


5.vim 不同工作模式下的常见命令

1到4只是讲解了vim的基本操作,但其实 vim 是全键盘式操作的编辑器,在各个模式下都有很多的功能键,只有掌握好了这些功能键,你才能成为真正的vim高手。下面将对3种模式下的功能键一一进行详细的讲解。

6.一般模式下的功能键

在一般模式下可以使用的功能键最多,可以分为三类:移动光标类,删除、复制和粘贴类,查找替换类

6.1移动光标类

一般模式下的移动光标类快捷键如图3-2所示。

6.2删除、复制和粘贴类

一般模式下的删除、复制和粘贴类快捷键如图3-3所示。

6.3查找替换类

一般模式下的查找和替换类快捷键如图3-4所示。

7.从一般模式进入编辑模式

从一般模式进入编辑模式,可以按下i,I,a,A,o,O, r,R这8个键中的任意一个,这8个键的意义是不一样的。其中,按下i,I,a,A,o,O时,窗口最下方将会出现“-- 插入 --”字样,按下R时,窗口最下方将会出现“-- 替换 --”字样。

从一般模式进入编辑模式的8个键的作用如图3-5所示。

8.命令行模式下的功能键

在一般模式下,输入“:”将进入命令行模式。命令行模式下支持的功能有:保存文件,退出vim,读入外部文件,设置行号等。

命令行模式下的功能键如图3-6所示。

9.文件救援和高级功能

下边介绍vim中的文件救援‌和一些高级功能,诸如多窗口编辑‌、多文件编辑‌和块选择‌等。

10.文件救援

在使用vim编辑文件时,vim会在被编辑的文件所处的目录下,建立一个名称为.filename.swp的隐藏文件。如果系统突然断电,导致编辑的文件没有及时保存,这个时候.filename.swp就能够发挥救援的功能了。当再次使用命令vim filename打开文件时,将会弹出发现交换文件.filename.swp的警告信息。

本例在使用vim test.txt命令编辑文件后没有保存就退出了终端,再次使用vim test.txt命令时就弹出了如图3-7所示的警告信息。

在警告信息的界面下方,系统为用户提供了六个可用选项,各选项的说明如下。

  • [O]pen Read-Only 以只读方式打开

  • (E)dit anyway 直接编辑

  • (R)ecover 恢复

  • (D)elete it 删除交换文件

  • (Q)uit 退出

  • (A)bort 中止

如果需要救援未保存的文件,先按下R,再按下回车键,test.txt文件就恢复出来了。

但需要注意的是,文件.filename.swp需要用户手动删除。否则下次打开文件时,还会弹出同样的警告画面。

11.多窗口编辑

11.1单个文件分屏编辑

在使用vim test.txt编辑文件时,在一般模式下,输入“:sp”,然后按下回车键,会将该文件显示在两个窗口中,实现水平分屏的功能,如图3-8所示。

在使用vim test.txt编辑文件时,在一般模式下,输入“:sp /etc/profile”,然后按下回车键,会将文件profile显示在第一个窗口中,test.txt显示在第二个窗口中,实现不同文件水平分屏的功能,如图3-9所示。

11.2多个文件分屏编辑

多文件分屏编辑的命令格式及说明如下。

格式: 

vim -On [FILE_1] [FILE_2] ...

vim -on [FILE_1] [FILE_2] ...

说明:

-O:垂直分割(vertical),不同窗口切换:【Ctrl】+w+←或者【Ctrl】+w+→

-o:水平分割(默认horizontal):【Ctrl】+w+ ↓或者【Ctrl】+w+ ↑

n:表示分几个屏,可缺省,默认按后面要分割的文件数来决定分几个屏

[FILE_1] [FILE_2] ...:需要分屏打开的文件

如果只打开2个文件,则重复按两次 【Ctrl】+w组合键即可切换窗口。

图3-10所示为使用vim –O test.txt /etc/passwd /etc/profile命令打开3个文件垂直分屏的界面。

11.3关闭分屏

要关闭其他的分屏时可以使用下面的命令。

(1)取消其他分屏,只保留当前分屏。

:only 或者 【Ctrl】+ w + o

(2)退出当前所在分屏。

:q

12.多文件编辑

在进行多文件编辑时,可以使用的命令如下。

格式: vim file1 file2 file3 ....

:n 编辑下一个文件(右侧)

:N 编辑上一个文件(左侧)

:files 列出目前vim 开启的所有文件

使用命令vim /etc/profile /etc/passwd /etc/hosts,在vim后面同时接3个文件来开启多文件同时编辑的功能,如图3-11所示。

13.块选择(Visual Block)

在使用vim编辑文件的时候,还可以选择某些字符、某些行或者以长方形的方式选择文件内容,然后将选中的文本删除或者复制。选择文本时可以使用的按键及说明如下。

  • v:字符选择,会将光标经过的地方反白选择。

  •  V:行选择,会将光标经过的行反白选择。

  •  [Ctrl]+v:区块选择,可以用长方形的方式选择资料。

  •  y:将反白的地方复制起来。

  •  d:将反白的地方删除掉。

  •  p:将复制的内容粘贴。

打开/etc/hosts文件,按下【Ctrl】+v键,选择的长方形区域如图3-12所示。


14.总结

以上便是本篇博客的全部内容,希望对大家的学习有所帮助,当然还有很多的命令博主没有进行详细的实操和呈现,需要大家下边自己操作,当然值得一提的是博主暂时是依据学校的课本作为参考,后边博主再进行深入学习之后,会对博客进行优化和修改!请敬请期待!我们下一篇博客再见!

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

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

相关文章

RocketMQ的消息类型

RocketMQ的消息类型 文章目录 RocketMQ的消息类型一、顺序消息二、广播消息应用场景:示例代码:实现思路:注意点: 三、延时消息应用场景:核心方法: 四、批量消息应用场景:示例代码:注…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型(Generative Language Models, GLMs)在文本生成任务中取得了显著进展。然而,生成内容的“幻觉”现象,即生成内容与事实或真实语义不符的问题,仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

git clone,用https还是ssh

前言 在使用Git去克隆项目时,会遇到https和ssh等形式,这两种又有何种区别呢,本文将重点讨论在具体使用中的问题。 注:第一次使用Git 时,需要先设置全局用户名和邮箱,否则后续使用命令时会报错,也是提醒先添…

最新整理:Selenium自动化测试面试题

1.selenium中如何判断元素是否存在? find_elements查找到的元素个数为0,find_element报错意味着元素不存在 2.如何判断元素是否出现? 判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的…

业绩代码查询实战——php

一、一级代码显示职员 foreach($data_职员信息 as $key > $value){//$where_查询分类$where_查询通用;//$dat分类one $业绩提成->where($where_查询分类)->order("CreateDate desc")->select();if($value[haschildname]0 && $value[key] !"…

如何彻底删除gitbash中所有的命令记录、以及彻底删除Windows powerShell或者cmd中的所有命令记录

文章目录 1. 文章引言2. 彻底删除gitbash中所有的命令记录3. 彻底删除Windows powerShell或者cmd中的所有命令记录1. 文章引言 有时,我们使用外部电脑从gitbash中下载代码,假设使用history -c命令: 可以清除当前弹框的历史记录,但也无法彻底删除命令记录。打开gitbash后,通…

工作管理实战指南:利用Jira、Confluence等Atlassian工具打破信息孤岛,增强团队协作【含免费指南】

如果工作场所存在超级反派,其中之一可能会被命名为“信息孤岛”,因为它们能够对公司的生产力和协作造成严重破坏。当公司决定使用太多互不关联的工具来完成工作时,“信息孤岛”就会出现,导致团队需要耗费大量时间才能就某件事情达…

OceanBase V4.3.3,首个面向实时分析场景的GA版本发布

在10月23日举办的 OceanBase年度发布会 上,我们怀着激动之情,正式向大家宣布了 OceanBase 4.3.3 GA 版的正式发布,这也是OceanBase 为实时分析(AP)场景打造的首个GA版本。 2024 年初,我们推出了 4.3.0 版本…

最新最全面的JAVA面试题免费下载

面对求职市场的激烈竞争,掌握全面且深入的Java知识已成为每一位Java开发者必不可少的技能。《2023最新版Java面试八股文》是一份精心整理的面试准备资料,旨在帮助广大开发者系统复习,从容应对Java及相关技术栈的面试挑战。这份文档不仅汇聚了…

Spring Security 框架篇-深入了解 Spring Security 的授权核心功能(RBAC 权限模型、自定义异常处理器、校验权限方法)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 权限系统 1.1 引入 1.2 RBAC 权限模型 1.3 数据库设计 2.0 Spring Security 核心功能-授权 2.1 思路分析 2.2 编写 SQL 语句 2.3 将用户权限进行封装 2.4 获取用户…

博捷芯MIP专机:精密划片技术的革新者

BJX8160 精密划片机作为MINI行业的专用机,凭借其全自动上下料、高精度高速度um级无膜切割以及兼容多种上下料方式等特点,成为了工厂无人值守自动化的理想选择。同时,MIP专机作为博捷芯的独创产品,展现了博捷芯在精密划片机领域的领…

【嵌入式】STM32中的SPI通信

SPI是由摩托罗拉公司开发的一种通用数据总线,其中由四根通信线,支持总线挂载多设备(一主多从),是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文…

Android 虚拟化框架(AVF)指南

Android 虚拟化框架(AVF)指南 一、项目介绍二、项目特色三、如何使用AVF四、总结 随着移动设备的普及和应用场景的多样化,安全性和隐私保护成为了移动操作系统的重要课题。Android作为全球最广泛使用的移动操作系统之一,一直在不断…

explain执行计划分析 ref_

这里写目录标题 什么是ExplainExplain命令扩展explain extendedexplain partitions 两点重要提示本文示例使用的数据库表Explain命令(关键字)explain简单示例explain结果列说明【id列】【select_type列】【table列】【type列】 【possible_keys列】【key列】【key_len列】【ref…

1.2 图像处理基本操作

在本实战中,我们将学习如何使用OpenCV进行基本的图像处理操作。首先,我们将通过cv2.imread()函数读取图像,并使用cv2.imshow()在窗口中显示它。接着,我们将探索如何通过cv2.imwrite()保存图像,并设置不同的参数以控制图…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十八集:制作UI系统的主菜单界面和选择存档界面

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作UI系统的主菜单界面 1.选择存档界面制作 2.代码的逻辑处理二、制作UI系统的选择存档界面 1.选择存档界面制作2.代码的逻辑处理总结 前言 hello大家好久…

Unity照片墙效果

Unity照片墙效果,如下效果展示 。 工程源码

华为HarmonyOS打造开放、合规的广告生态 - 贴片广告

场景介绍 贴片广告是一种在视频播放前、视频播放中或视频播放结束后插入的视频或图片广告。 接口说明 接口名 描述 loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void 请求单广告位广告,通过AdRequestParams、AdOptions…

基于 Transformer 的语言模型

基于 Transformer 的语言模型 Transformer 是一类基于注意力机制(Attention)的模块化构建的神经网络结构。给定一个序列,Transformer 将一定数量的历史状态和当前状态同时输入,然后进行加权相加。对历史状态和当前状态进行“通盘…

【天线&运输】冲浪者检测系统源码&数据集全套:改进yolo11-DySnakeConv

改进yolo11-SCConv等200全套创新点大全:冲浪者检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.03 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…