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

目录

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.rhkb.cn/news/464275.html

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

相关文章

4种鼓励创业创新的方法

随着市场趋于饱和,许多企业,尤其是初创企业,很难在竞争中保持领先地位。技术为企业彻底改变其营销和管理策略铺平了道路。另一个经过实践检验的成功渗透特定市场的方法是在办公室内部激发创新,从员工到品牌皆如此。 那么究竟如何…

【华为HCIP实战课程31(完整版)】中间到中间系统协议IS-IS路由汇总详解,网络工程师

一、IS-IS的汇总 1、可以有效减少在LSP中发布的路由条目,减小对系统资源的占用。 2、会减少LSP报文的扩散,接收到该LSP报文的其他设备路由表中只会出现一条聚合路由。 3、可以避免网络中的路由震荡,提高了网络的稳定性。 4、被聚合的路由可以是IS-IS路由,也可以是被引入…

后端java——如何为你的网页设置一个验证码

目录 1、工具的准备 2.基本方法 3.实现类 4.实践 HTML文件: Java文件1:创建验证码 Java文件2:验证验证码 本文通过HUTOOL实现:Hutool参考文档Hutool,Java工具集https://hutool.cn/docs/#/ 1、工具的准备 如果我们通过hutool来实现这个…

1、Qt6 Quick 简介

一、Qt6 Quick 简介 1、Qt Quick简介 Qt Quick 是 Qt 6 中使用的用户界面技术的总称。它是在 Qt 4 中引入的,现在在 Qt 6 中进行了扩展。Qt Quick 本身是几种技术的集合: QML——用户界面标记语言JavaScript - 动态脚本语言Qt C - 高度可移植的增强型…

微服务系列二:跨微服务请求优化,注册中心+OpenFeign

目录 前言 一、纯 RestTemplate 方案存在的缺陷 二、注册中心模式介绍 三、注册中心技术:Nacos 3.1 Docker部署Nacos 3.2 服务注册 3.3 服务发现 四、代码优化:OpenFeign工具 4.1 OpenFeign快速入门 4.2 连接池的必要性 4.3 抽取服务、最佳实…

andrular输入框input监听值传递

效果图&#xff1a; step1: E:\projectgood\ajnine\untitled4\src\app\apple\apple.component.html <button mat-button (click)“openDialog()”>Open dialog step2: E:\projectgood\ajnine\untitled4\src\app\apple\apple.component.ts import {Component, inject}…

像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写

只需安装插件pdm-plugin-i即可&#xff1a; pdm plugin add pdm-plugin-i 然后就可以愉快地pdm i了&#xff0c;例如&#xff1a; git clone https://github.com/waketzheng/fast-dev-cli cd fast-dev-cli python -m pip install --user pipx pipx install pdm pdm plugin a…

qt QTabWidget详解

1、概述 QTabWidget是Qt框架中的一个控件&#xff0c;它提供了一个标签页式的界面&#xff0c;允许用户在不同的页面&#xff08;或称为标签&#xff09;之间切换。每个页面都可以包含不同的内容&#xff0c;如文本、图像、按钮或其他小部件。QTabWidget非常适合用于创建具有多…

关于wordpress instagram feed 插件 (现更名为Smash Balloon Social Photo Feed)

插件地址&#xff1a; Smash Balloon Social Photo Feed – Easy Social Feeds Plugin – WordPress 插件 | WordPress.org China 简体中文 安装后&#xff0c;配置教程&#xff1a; Setting up the Instagram Feed Pro WordPress Plugin - Smash Balloon 从这里面开始看就…

初始JavaEE篇——多线程(5):生产者-消费者模型、阻塞队列

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 文章目录 阻塞队列生产者—消费者模型生产者—消费者模型的优势&#xff1a;生产者—消费者模型的劣势&#xff1a; Java标准库中的阻…

用ChatGPT提升工作效率:从理论到实际应用

伴人工智能技术的迅速演进&#xff0c;像ChatGPT这类语言模型已成为提升工作效率的关键工具。这类模型不仅具备处理海量数据的能力&#xff0c;还能自动化许多日常任务&#xff0c;从而提高决策的准确性。本文将深入探讨如何在工作中利用ChatGPT等AI工具提升效率&#xff0c;涵…

如何修改网络ip地址:一步步指南‌

在当今这个数字化时代&#xff0c;网络已成为我们日常生活与工作中不可或缺的一部分。无论是浏览网页、在线办公还是享受流媒体服务&#xff0c;稳定的网络连接和适当的IP地址管理都是确保良好体验的关键。然而&#xff0c;出于隐私保护、绕过地理限制或测试网络环境等需要&…

ENSP (虚拟路由冗余协议)VRRP配置

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种用于提高网络可用性和可靠性的协议。它通过在多个路由器之间共享一个虚拟IP地址&#xff0c;确保即使一台路由器发生故障&#xff0c;网络依然能够正常运行&#xff0c;防止…

SpringCloud Alibaba-05 Seata分布式事务处理

一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用&#xff0c;就会产生分布式事务问题。但是关系型数据库提供的能力是基于单机事务的&#xff0c;一旦遇到分布式事务场景&#xff0c;就需要通过更多其他技术手段来解决问题。 1.四大模式&#xff1a; Seata AT模式(主…

非线性数据结构之图

一、有向图&#xff08;Directed Graph&#xff09; 1. 定义 有向图是一个由顶点&#xff08;节点&#xff09;和有方向的边&#xff08;弧&#xff09;组成的图。在有向图中&#xff0c;每条边都有一个起点和一个终点&#xff0c;表示从一个顶点到另一个顶点的关系。 2. 特…

大数据之Hadoop集群

Hadoop集群介绍&#xff1f;Hadoop集群的优缺点及应用场景&#xff1f;Hadoop集群搭建&#xff1f;Hadoop架构&#xff1f; Hadoop集群介绍 Hadoop集群是由多台计算机&#xff08;节点&#xff09;组成的一个分布式计算系统&#xff0c;主要用于处理大规模的数据集。以下是对Ha…

云原生+AI核心技术&最佳实践

以下内容是我在陕西理工大学2023级人工智能专业和网络专业的演讲内容&#xff0c;分享给大家。 各位老师、同学们&#xff0c;大家好啊&#xff01;能在这里跟大家一起聊聊咱们计算机专业那些事儿&#xff0c;我真的觉得超级兴奋&#xff01; 首先&#xff0c;自我介绍一下&am…

数字信号处理Python示例(5)使用实指数函数仿真PN结二极管的正向特性

文章目录 前言一、二极管的电流-电压关系——Shockley方程二、PN结二极管正向特性的Python仿真三、仿真结果分析写在后面的话 前言 使用Python代码仿真了描述二极管的电流-电压关系的Shockley方程&#xff0c;对仿真结果进行了分析&#xff0c;说明在正向偏置区域&#xff0c;…

真·香!深度体验 zCloud 数据库云管平台 -- DBA日常管理篇

点击蓝字 关注我们 zCloud 作为一款业界领先的数据库云管平台&#xff0c;通过云化自治的部署能力、智能巡检和诊断能力、知识即代码的沉淀能力&#xff0c;为DBA的日常管理工作带来了革新式的简化与优化。经过一周的深度体验&#xff0c;今天笔者与您深入探讨 zCloud 在数据库…

ICPC区域赛成都站【赛后回顾+总结】

传送门 前言赛后总结赛后回顾赛后感悟 前言 首先&#xff0c;这是本人本赛季第一场XCPC区域赛&#xff0c;也是本人算竞生涯中第一场XCPC区域赛&#xff08;之前只打过邀请赛和省赛&#xff09;。 赛后总结 然后赛后总结一下&#xff1a;我队天崩开局&#xff0c;我队出师不利…