当前位置: 首页 > news >正文

Linux系列 使用vi文本编辑器

45364ff1c2cb4e7fa9a65c99ef0eb848.gif

  • 作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 

 前言

一.vi文本编辑器

1.使用vi文本编辑器

2.vi编辑器的工作模式

3.命令模式中的基本操作

(1)模式切换

(2)移动光标

(3)复制、粘贴和删除

(4)查找文件内容

(5)撤销编辑及保存和退出

4.末行模式中的基本操作

 (1)保存文件及退出vi编辑器

(2)打开新文件或读入其他文件内容 

 (3)替换文件内容


 前言

本章将会讲解使用vi文本编辑器


一.vi文本编辑器

配置文件是Linux操作系统的显著特征之一,其作用有点类似于Windows操作系统中的注册表,只不过注册表是集中管理,而配置文件采用了分散的自由管理方式。本节将学习如何使用Linux字符操作界面中的文本编辑器——vi,以便更好地管理和维护系统中的各种配置文件。


1.使用vi文本编辑器

vi是一个功能强大的全屏幕文本编辑工具,一直以来都作为类UNIX操作系统的默认文本编辑器,vim是vi文本编辑器(简称vi编辑器)的增强版本,在vi编辑器的基础上扩展了很多实用的功能,但是习惯上也将vim称为vi,为了使用方便,可以设置一个命令别名,将vi指向vim程序(本文中以vim程序为例)具体操作如下:

[root@localhost ~]# alias vi='/usr/bin/vim'
[root@localhost ~]# which -a vi vim

2.vi编辑器的工作模式

vi编辑器是工作在字符终端环境下的全屏幕编辑器,因此编辑界面相对比较简单,没有为用户提供鼠标操作和菜单系统,而是通过按键命令实现相应的编辑和操作功能,在v编辑界面中可以使用三种不同的工作模式,即命令模式,输入模式和末行模式,在不同的模式中能够对文件进行的操作也不相同。

  • 命令模式:启动vi编辑器后默认进入命令模式。该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。
  • 输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改或添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“--NSERT--”的状态提示信息。
  • 末行模式:该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号”:”提示符。

命令模式、输入模式和末行模式是vi编辑环境的三种状态,通过不同的按键操作可以在不同的模式间进行切换。例如,从命令模式按:(冒号)键可以进入末行模式,按a,i,o等键可以进入输入模式:在输入模式、末行模式均可按Esc键返回命令模式,如图所示。

ef29e6ddead84b55872f6d8b54a9f370.png

 认识了vi编辑器的不同编辑模式(状态)以后,下面分别介绍在命令模式、末行模式中的常见操作方法(输入模式用于录入文本内容,不做特别介绍)。


3.命令模式中的基本操作

执行单独的“vi”命令即可进入v编辑器的命令模式,还会显示相关版本信息,如图所示。但更常见的使用方法是指定要编辑的文件名作为参数,若该文件不存在,则vi根据该文件名称打开一个新的空文件。

d6789251d73646ac85ad08a654658df0.png

 在学习vi编辑器的基本操作时,建议复制一个内容较多的系统配置文件进行练习,而不要直接去修改系统文件,以免发生失误造成系统故障。


例如以下操作把系统配置文件/etc/yum.conf复制为当前目录下的vitest.file文件,然后用vi编辑器打开vitest.file文件进行编辑。

[root@localhost ~]# cp /etc/yum.conf ./vitest.file
[root@localhost ~]# vi vitest.file

在vi编辑器的命令模式中,可以输入特定的按键(称为vi操作命令注意区别于Linux操作系统命令)进行操作,主要包括模式切换、光标移动、复制、删除、粘贴、文件内容查找及保存和退出等操作,这里只介绍一些最基本且常用的按键命令。


(1)模式切换

在命令模式中,按a.i.o等键可以快速切换至输入模式,同时确定插入点的方式和位置,以便录入文件内容,需要返回命令模式时,按Esc键即可。常见的几个模式切换键及其作用如下。

  • a:在当前光标位置之后插入内容。
  • A:在光标所在行的末尾(行尾)插入内容。
  • i:在当前光标位置之前插入内容。
  • I:在光标所在行的开头(行首)插入内容。
  • o:在光标所在行的后面插入一个新行。
  • O:在光标所在行的前面插入一个新行。

(2)移动光标

光标方向的移动,直接按↑,↓,←,→一西个方向键完成相应的光标移动。

题页移动

按Page Dewn键或Crl+F组合键向下期动一整页内容。
技Pagt lip或Cr1+8组合键向上翻动一整页内容。

行内快速跳转

  • 按Horme键成“键,散字0键将元标快速鹏转到本行的行首。
  • 接End键或1键将光标快速跳转到本行的行尾。
  • 在上述按键操作中,PageDown,Pagn Up,homm,End及方向键同样也可在w的输入模式中使用。

入行间快速跳转

  • 使用按键命令1G或者0可跳转到文件内容的第1行。
  • 使用按键命令G可跳转到文件的最后一行。
  • 使用按键会令#G可院转到文件中的第#行(其中“二”号用高体数字替换)。

为了便于查看行间期转效果,这里先学习如何在v编辑器中是示行号,只要切换到末行模式并
执行如下的”set cu”命令即可显示行号,执行"set nonu"命令可以取消量示行号.

0dab35e2170c4108ad86af710ec7c6a7.png

 显示行号后的vi编辑器界面显示格式如下(每行开头的数字即行号):

6871caa8455c40f6b062425eda766fde.png


(3)复制、粘贴和删除

删除操作。

  • 按×键或Delete键删除光标处的单个字符。
  • 使用按键命令dd删除当前光标所在行,使用#dd的形式还可以删除从光标处开始的#行内容(其中“#”号用具体数字替换)。
  • 使用按键命令d删除当前光标之前到行首的所有字符。
  • 使用按键命令ds删除当前光标处到行尾的所有字符。

复制操作,使用按键命令Yy复制当前行整行的内容到剪贴板,使用#Yy的形式还可以复制从光标处开始的#行内容(其中“#”号用具体数字替换).复制的内容需要粘贴后才能使用。

粘贴操作。在vi编辑器中,前一次被删除或复制的内容将会保存到剪切板缓冲区中,按p键即可将缓冲区中的内容粘贴到光标位置处之后,按P键则会粘贴到光标位置处之前。


(4)查找文件内容

在命令模式中,按/键后可以输入指定的字符串,从当前光标处开始向后进行查找(按?键则向前查找).完成查找后可以按n、N键在不同的查找结果中进行选择,例如,输入“/yum”,按Enter键后将查找出文件中的“yum”字符串并高亮显示,光标自动移动至第一个查找结果处,按n键可以移动到下一个查找结果,如图所示。

9aee9a0800e0490e861ae3df127d79b7.png


(5)撤销编辑及保存和退出

在对文件内容进行编辑时,有时候需要对一些失误的编辑操作进行撤销,这时可以使用按键u,U键,其中,u键命令用于取消最近一次的操作,并恢复操作结果,可以多次重复按υ键恢复已进行的多步操作;U键命令用于取消对当前行所做的所有编辑。当需要保存当前的文件内容并退出vi编辑器时,可以使用按键命令ZZ。


4.末行模式中的基本操作

在命令模式中按:键可以切换到末行模式,vi编辑器的最后一行中将显示”:提示符,用户可以在该提示符后输入特定的末行命令,完成如保存文件,退出编辑器,打开新文件,读取其他文件内容及字符串替换等丰富的功能操作。


 (1)保存文件及退出vi编辑器

保存文件,对文件内容进行修改并确认以后,需要执行如下的“w”命令进行保存。

58ebcd4c1e384151a5e3b614755436c7.png

若需要另存为其他文件,则需要指定新的文件名,必要时还可以指定文件路径。

例如,执行如下的“:w/root/newfile操作将把当前编辑的文件另存到/root 目录下,文件名为newfile. 

18cefd1441ef45ed92754d6ff6c86278.png

退出编辑器。需要退出vi编辑器时,可以执行“:q命令,若文件内容已经修改却没有保存,则仅使用”;q”命令将无法成功退出,这时需要使用如下的”q!”命令强行退出(不保存即退出)。

63e7215ee7104f6e84e9c3e70d27b82f.png

保存并退出。既要保存文件又要退出vi编辑器可以使用一条末行命令“:wq”或“:x”实现,其效果与命令模式中的ZZ命令相同,具体操作如下: 

4b36672f03c24e1e86b64f6552d86c28.png

7a37c30ae2e44c9eacad759ceac94572.png


(2)打开新文件或读入其他文件内容 

打开新的文件进行编辑。在当前vi编辑器中,执行”:e新的文件”形式的末行命令可以编辑(Edit)新文件。

例如,执行如下的‘:e~/initial-setup-ks.cfg”操作将直接打开当前用户宿主目录中的initial-setup-ks.cfg文件进行编辑。

:e ~/initial-setup-ks.cfg

在当前文件中读入其他文件内容,执行“r其他文件”形式的末行命令可以读入(Read)其他文件中的内容,并将其复制到当前光标所在位置。

例如,执行如下的“r/etc/filesystems操作将把系统文件/etc/filesystems中的内容复制到当前文件中。

:r /etc/filesystems

 (3)替换文件内容

在vi编辑器的末行模式中,能够将文件中特定的字符串替换成新的内容,当需要大批量修改同一内容时,使用替换功能将大大提高编辑效率,使用替换功能时的末行命令格式如下:

:[替换范围]sub/旧的内容/新的内容[/g]

在上述替换格式中,主要关键字为sb(Substitute,替换).也可以简写为s.替换范围是可选部分,默认时只对当前行内的内容进行替换,一般可以表示为以下两种形式。

  • %:在整个文件内容中进行查找并替换。
  • n.m;在指定行数范围内的文件内容中进行查找并替换。

替换格式中最末尾的/g部分也是可选内容,表示对替换范围内每一行的所有匹配结果都进行替换,省略/g时将只替换每行中的第一个匹配结果。

例如,若要将文档中第5行~第15行中的“initdefault”字符串替换为“DEFAULT”,可以执行以下操作:

:5,15 s /initdefault/DEFAULT/g

当需要对整个文档范围进行查找替换操作时,需要使用“%”符号表示全部,例如,以下操作将会把当前文件中所有的“initdefault”字符串替换为“bootdefault”

:% s /initdefault/bootdefault/g

 创作不易,求关注,点赞,收藏,谢谢~  

 

相关文章:

Linux系列 使用vi文本编辑器

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.vi文本编辑器 1.使用vi文本编辑器 2.vi编辑器的工作模式 3.命令模式中的…...

【java基础】接口(interface)

文章目录基础介绍接口的定义关于接口字段和方法的说明使用接口抽象类和接口接口方法冲突的一些说明方法相同名称和参数,返回值相同方法名称相同,参数不同,返回值相同方法返回值不同,名称参数相同方法完全相同,一个有默…...

ChatGPT(GPT3.5) OpenAI官方API正式发布

OpenAI社区今天凌晨4点多发送的邮件,介绍了ChatGPT官方API的发布。官方介绍文档地址为“OpenAI API”和“OpenAI API”。 ChatGPT(GPT3.5)官方API模型名称为“gpt-3.5-turbo”和“gpt-3.5-turbo-0301”。API调用价格比GPT text-davinci-003模型便宜10倍。调用费用为…...

CAD中如何将图形对象转换为三维实体?

有些小伙伴在CAD绘制完图纸后,想要将图纸中的某些图形对象转换成三维实体,但却不知道该如何操作,其实很简单,本节CAD绘图教程就和小编一起来了解一下浩辰CAD软件中将符合条件的对象转换为三维实体的相关操作步骤吧! 将…...

【K8S笔记】Kubernetes 集群架构与组件介绍

K8S 官方文档 https://kubernetes.io/zh/docs/home ##注重关注 概念和任务 板块。 K8S 集群架构 K8S也是运用了分布式集群架构: 管理节点/Master 整个集群的管理,任务协作。工作节点/Node 容器运行、删除。 K8S 组件介绍 管理节点/Master 相关组件 …...

9 怎么登录VNC

1)首先在ssh登录后启动vncserver。登陆后输入下面的指令来创建自己的VNC。 命令vncserver :16 –geometry 1900x1000 其中:16是分配的端口号,1900x1000是分辨率。如果没有响应,建议执行下面操作后再次重复上面操作。 命令&#xf…...

MPI ubuntu安装,mpicc,mpicxx,mpif90的区别

介绍 MPI是并行计算的一个支持库,支持对C、C、fortran语言进行并行计算。 安装基础环境 ubuntu进行gcc/g/gfortran的安装: gcc: ubuntu下自带gcc编译器。可以通过gcc -v命令来查看是否安装。 g: sudo apt-get install buil…...

移动端笔记

目录 一、移动端基础 二、视口 三、二倍图/多倍图 四、移动端开发 (一)开发选择 (二)常见布局 (三)移动端技术解决方案 五、移动WEB开发之flex布局 六、移动WEB开发之rem适配布局 #END&#xff08…...

操作系统笔记、面试八股(一)—— 进程、线程、协程

文章目录1. 进程、线程、协程1.1 进程1.1.1 进程间的通信方式1.1.2 进程同步方式1.1.3 进程的调度算法1.1.4 优先级反转1.1.5 进程状态1.1.6 PCB进程控制块1.1.7 进程的创建和撤销过程1.1.8 为什么要有进程1.2 线程1.2.1 为什么要有线程1.2.2 线程间的同步方式1.3 协程1.3.1 什…...

Python每日一练(20230302)

目录 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 附录 Python字典内置方法 增 删 改 查 其它 1. 字符串统计 从键盘输入一个包含有英文字母、数字、空格和其它字符的字符串,并分别实现下面的功能:统计字符串中出现2次的英文字母&#…...

Numpy课后练习

Numpy课后练习 文章目录 Numpy课后练习一、前言二、题目及答案一、前言 答案仅供参考,谢谢大家! 二、题目及答案 导入Numpy包并设置随机数种子为666 import numpy as np np.random.seed(666)创建并输出一个包含12个元素的随机整数数组r1,元素的取值范围在[30,100)之间 r1 …...

动态规划dp中的子序列、子数组问题总结

目录 定义dp数组 初始化dp数组 状态转移方程 最终结果 题目 定义dp数组 这类问题的共性是会提供两个数组,寻找他们共同的子序列、子数组。设第一个数组为s,第二个数组为t。则可以设二维dp数组,其大小为len(s + 1)*len(t + 1) dp[i][j]表示 s 前 i 个长度,...

Zookeeper3.5.7版本——Zookeeper的概述、工作机制、特点、数据结构及应用场景

目录一、Zookeeper的概述二、Zookeeper的工作机制三、Zookeeper的特点四、Zookeeper的数据结构五、Zookeeper的应用场景5.1、统一命名服务5.2、统一配置管理5.3、统一集群管理5.4、服务器动态上下线5.5、软负载均衡一、Zookeeper的概述 Zookeeper 是一个开源的分布式的&#x…...

安卓逆向学习及APK抓包(二)--Google Pixel一代手机的ROOT刷入面具

注意:本文仅作参考勿跟操作,root需谨慎,本次测试用的N手Pixel,因参考本文将真机刷成板砖造成的损失与本人无关 1 Google Pixel介绍 1.1手机 google Pixel 在手机选择上,优先选择谷歌系列手机,Nexus和Pixel系列&…...

线程池的基本认识与使用

线程池的基本认识与使用线程池线程池工作原理:优点:传统的创建线程方式线程池创建线程使用线程池 池化思想:线程池、字符串常量池、数据库连接池可以提高资源的利用率 线程池工作原理: 预先创建多个线程对象 放入线程池种&#…...

小家电品牌私域增长解决方案来了

小家电品牌的私域优势 01、行业线上化发展程度高 相对于大家电动辄上千上万元的价格,小家电的客单价较低。而且与大家电偏刚需属性不同的是,小家电的消费需求侧重场景化,用户希望通过购买小家电来提高自身的生活品质。这就决定了用户的决策…...

什么是让ChatGPT爆火的大语言模型(LLM)

什么是让ChatGPT爆火的大语言模型(LLM) 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录什么是让ChatGPT爆火的大语言模型(LLM)大型语言模型有什么用?大型语言模型如何工作?大型语言模型的热门应用在哪里可以找到大型语言…...

【监控】Linux部署postgres_exporter及PG配置(非Docker)

目录一、下载及部署二、postgres_exporter配置1. 停止脚本stop.sh2. 启动脚本start.sh3. queries.yaml三、PostgreSQL数据库配置1. 修改postgresql.conf配置文件2. 创建用户、表、扩展等四、参考一、下载及部署 下载地址 选一个amd64下载 上传至服务器,解压 tax…...

基于Java+SpringBoot+Vue+Uniapp(有教程)前后端分离健身预约系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…...

【2023】DevOps、SRE、运维开发面试宝典之Redis相关面试题

文章目录 1、redis主从复制原理2、redis哨兵模式的原理3、reids集群原理4、Redis 哈希表进行的触发时机是什么?5、Redis 的 RDB 和 AOF 机制各自的优缺点是什么?这两种机制是否可以混合使用?6、Redis 经常被称为单线程的系统,你如何理解 Redis 的单线程模型7、redis 的事务…...

十五、MyBatis使用PageHelper

1.limit分页 limit分页原理 mysql的limit后面两个数字: 第一个数字:startIndex(起始下标。下标从0开始。) 第二个数字:pageSize(每页显示的记录条数) 假设已知页码pageNum,还有每页…...

【MySQL】B+ 树索引

一、索引是什么 ? 为什么需要索引 ? 索引就是目录,目录就是索引。 索引从 InnoDB 存储引擎数据存储结构上来看,就是为各个页建立的目录。保证我们在查询时,可以通过二分法快速定位到页,再在页内通过二分法…...

Android Gradle Plugin Version 和 Gradle Version 的对应关系

官网参考 以下是插件版本和Gradle 版本对应关系: 插件版本所需的最低 Gradle 版本Android Gradle Plugin VersionGradle Version1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.1 - 3.52.3.03.33.0…...

更多单词/词组/短语补充和总结(二)

auto 美 /[ˈɔːtoʊ] n.汽车adj.与汽车有关的,汽车的。不要记成“自动的” mobile 美 /[ˈmoʊbl] adj.可移动的;流动的;不要记成“手机”,手机是mobile phone automobile 美 /[ˈɔːtəməbiːl] n.汽车adj.自动的 automatic 美 /[ˌɔːtəˈmtɪk]…...

HEC-HMS和HEC-RAS快速入门、防洪评价报告编制及洪水建模、洪水危险性评价等应用

目录 ①HEC-RAS一维、二维建模方法及实践技术应用 ②HEC-HMS水文模型实践技术应用 ③新导则下的防洪评价报告编制方法及洪水建模实践技术应用 ④基于ArcGIS水文分析、HEC-RAS模拟技术在洪水危险性及风险评估 ⑤山洪径流过程模拟及洪水危险性评价 ①HEC-RAS一维、二维建模方…...

全面了解 B 端产品设计 — 基础扫盲篇

在今天,互联网的影响力与作用与日俱增,除了我们日常生活领域的改变以外,对于商业领域的渗透也见效颇丰。 越来越多的企业开始使用数字化的解决方案来助力企业发展,包括日常管理、运营、统计等等。或者通过互联网的方式开发出新的业务形态,进行产业升级,如这几年风头正劲的…...

顺序表(增删查改)

目录一、什么是顺序表二、顺序表的增删查改2.1 结构体的声明2.2 顺序表的初始化2.3 顺序表检查容量2.4 顺序表尾部插入数据2.5 顺序表头部插入数据2.6 顺序表尾部删除数据2.7 顺序表头部删除数据2.8 顺序表查找数据2.9 顺序表任意位置插入数据2.10 顺序表任意位置删除数据2.11 …...

一款优秀的低代码开发平台是什么样的?

目录 一、一款优秀的低代码平台应该是什么样的? 二、低代码核心能力 01、全栈可视化编程: 02、全生命周期管理: 03、低代码扩展能力: 三、小结 一、一款优秀的低代码平台应该是什么样的? 从企业角度来说&#x…...

ElasticSearch 学习笔记总结(四)

文章目录一、ES继承 Spring Data 框架二、SpringData 功能集成三、ES SpringData 文档搜索四、ES 优化 硬件选择五、ES 优化 分片策略六、ES 优化 路由选择七、ES 优化 写入速度优化七、ES 优化 内存设置八、ES 优化 重要配置一、ES继承 Spring Data 框架 Spring Data 是一个用…...

HDFS文件块大小

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadooop2X版本中是128M,老版本中是64M。 思考:为什么块的大小不能设置太小&…...

手机网页无法打开是什么原因/北京seo经理

来自:http://blog.163.com/fjshqhy_2003/blog/static/140268782011217514938/android 在开发google map 项目的时候,首先需要一个android.keystore文件,该文件在 如果是win 7 则:C:\Users\Administrator\.android\ 如果是win xp 则…...

重庆网站开发商城/今天国际新闻最新消息

一、python语言基础 1.1变量变量.png 1.2数据类型数据类型.png 1.3序列 序列分类:可变序列list,不可变序列tuple、str。在python中,内建了6中序列:列表、元组、字符串、unicode字符串、buffer对象、xrange对象。 (1)list列表list列…...

wordpress 自动插入/常见的网站推广方法

参考: 作者:浅然_ https://blog.csdn.net/w_linux/article/details/80086950 spring就是一个能够替你做很多事情的工厂,spring容器中的Bean就是该工厂的产品。要想使用Spring工厂生产和管理Bean,就需要在配置文件中指明需要哪些B…...

石头科技 网站开发/网络推广销售是做什么的

文章目录云效软件测试和质量保证1. 云效平台测试管理功能介绍2. 云效测试用例3. 云效测试计划4. 云效测试用例执行与报告云效软件测试和质量保证 1. 云效平台测试管理功能介绍 1. 测试管理简介: 云效的「测试管理」功能包含对测试计划与执行用例的创建、编辑、规…...

114物流网站怎么做/上海关键词优化排名哪家好

我用的是Qt做界面的&#xff0c;先来看看效果吧&#xff1a; 登录界面&#xff1a; #include <QPushButton> #include "regisered.h" #include "maininterface.h" #include "userpasswod.h"//声明外部变量 extern QString username…...

网站建设合同中英文/自己有货源怎么找客户

在CSS中background: -moz-linear-gradient 让网站背景渐变的属性&#xff0c;目前火狐3.6以上版本和google浏览器支持这个属性。 background: -moz-linear-gradient(top, #bccfe3 0%, #d2dded 100%); 适合 FF3.6 background: -webkit- gradient(linear, left top, left bott…...