快速上手Linux核心命令:Linux的文本编辑器vi和vim

news2024/11/17 5:22:41

前言

上一篇中已经预告,我们这篇主要说Linux中vi/vim 编辑器。它是我们使用Linux系统不可缺少的工具,学会了,你就可以在Linux世界里畅通无阻,学废了,常用操作你也会了,也是够用了,O(∩_∩)O

简介

vi是Linux系统下标准编辑器,就相当于Windows系统中的记事本一样。功能不输给最新的文本编辑器。vim可以看作是vi的升级版本,具有代码补全、编译即错误跳转等程序编辑能力,可以用多种颜色的方式来显示一些特殊信息。

小试牛刀

下面我们演示一下,这么建立一个xiezhr.txt文件,并往xiezhr.txt 中添加内容

① 输入如下命令进入vi/vim(vi/vim 文件名 就能够进入 vi/vim 的普通模式了。注: vi/vim 后面一定要加文件名,不管该文件存在与否

 
vim xiezhr.txt

② 按下 【i】 进入输入模式(也称为编辑模式),开始编辑文字

 

③ 文件编辑完后我们怎么保存退出呢? 这时候我们按下【Esc】键,发现界面上--INSERT--不见了,这是我们已经退出了输入模式,这时我们再按下【:】即可进入底线命令模式。

 

④ 我们再输入【wq】即可保存xiezhr.txt文档并退出

以上就是vi/vim基本操作,是不是很简单哦(●'◡'●)

当然这只是vi/vim 最基本的操作。它的强大之处可能是你想都想不到的。如果你想了解更多vi/vim操作,可去查查相关资料。

vi/vim 工作原理及三种模式

vi/vim 共分为三种模式,分别是普通模式(Command mode),输入模式(Insert mode)和底线命令行模式(Last line mode)

根据上面的例子,我们再结合下图,你应该对vi/vim工作原理及三模式了如指掌了吧 O(∩_∩)O

常用快捷键

三种模式下操作快捷键说明

一、一般模式

1、移动光标

按钮操作说明
【h、j、k、l】分别控制光标左、下、上、右移一格
【ctrl+b】屏幕往"后"移动一页
【n】光标向右移动n个字符
【Home】移动到这一行的最前面字符处:0数字,但不能用数字小键盘上的数字
【End】移动到这一行的最后面字符处:$,我测试好像不行
【w】光标跳到下个字的开头
【e】光标跳到下个字的字尾
【H】光标移动到这个屏幕的最上方那一行的第一个字符
【M】光标移动到这个屏幕的中间那一行的第一个字符
【L】光标移动到这个屏幕的最下方那一行的第一个字符
【G】移动到这个文件的最后一行
【nG】移动到这个文件的第n行(可配合:set nu)
【gg】移动到这个文件的第一行,相当于1G
【n】光标向下移动n行

2、 查找与替换

按钮操作手册
【/word】向光标向下寻找一个名称为word的字符串
【?word】向光标向上寻找一个名称为word的字符串
【n】代表重复前一个查找的动作
【N】与n刚好相反,为【反向】进行行前一个查找动作
【:n1,n2s/word1/word2/g】n1与n2为数字,在第n1与n2行之间查找word1 这个字符串,并将该字符串替换为word2
【:1,$s/word1/word2/g】从第一行到最后一行查找word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/gc】从第一行到最后一行查找word1字符串,并将该字符串替换为word2 ,且在替换前提示用户确认是否进行替换

3、 删除、复制与粘贴

按键操作说明
【x】为向后删除一个字符 (相当于【del】键
【X】为向前删除一个字符(相当于【backspace】键)
【nx】连续向后删除n个字符
【dd】删除光标所在行
【ndd】删除光标所在的向下n行
【d1G】删除光标所在行到第一行的所有数据
【dG】删除光标所在到最后一行的所有数据
【d$】删除光标所在处,到该行的最后一个字符
【d0】删除光标所在处,到该行的最前一个字符
【yy】复制光标所在的那一行
【nyy】复制光标所在的向下n列
【y1G】复制光标所在行到第一行的所有数据
【yG】复制光标所在行到最后一行的所有数据
【y0】复制光标所在的那个字符到该行行首的所有数据
【y$】复制光标所在的那个字符到该行行尾的所有数据
【p】将已复制的数据在光标下一行粘贴上
【P】则为贴在光标的上一行
【u】恢复前一个操作
【Ctrl+r】重做上一个操作
【.】是重复前一个操作

二、一般模式、编辑模式(插入模式)切换

按键操作说明
【i】从目前光标所在处插入
【I】在目前所在行的第一个非空格符处开始插入
【a】从目前光标所在的下一个字符处开始插入
【A】从光标所在行的最后一个字符处开始插入
【o】在目前光标所在的下一行处插入新的一行
【O】为在目前光标所在处的上一行插入新的一行
【r】只会取代光标所在的那一个字符一次
【R】会一直取代光标所在的文字,直到按下 ESC 为止;
【Esc】退出编辑模式(插入模式),回到一般模式

三、一般模式、命令行模式切换

按键操作
【:w】保存编辑的内容
【:w!】强制写入该文件,但跟你对该文件的权限有关
【:q】离开vi
【:q!】不想保存修改强制离开
【:wq】保存后离开
【:x】保存后离开
【ZZ】若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开
【:w filename】将编辑的数据保存成另一个文件(类似另存)
【:r filename】在编辑的数据中,读入另一个文件的数据。即将【filename】 这个文件的内容加到光标所在行后面。
【:n1,n2 w filename】将n1到n2的内容保存成filename这个文件。
【:! command】暂时离开vi 到命令行模式下执行command的显示结果!例如 【:! ls /home】即可在 vi 当中察看/home底下以ls输出的文件信息!
【:set nu】显示行号
【:set nonu】与 set nu 相反,为取消行

命令行图解

上面一下列举了好多按键,你会说我怎么记得住呢? 其实没必要把所有的都记住了,常用的就那么几个。敲得多了自然就记住了,记不住得再来翻一翻这篇文章就好了😄。

下面呢从网上找了两张vi/vim命令行图解,希望对你有帮助。

在这里插入图片描述

这期内容就到这,下期根据思维导图就到Linux系统信息相关命令的使用了。

涉及到的命令有: uname、 hostname 、 du 、 echo、 whereis 、 date 、 which 等等 

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

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

相关文章

javascript初学者可以做些什么小东西或者项目来练手?

前言 可以试一下面的一些项目,可能有一些比较复杂,可以学习一下代码的结构思路,希望对你有帮助~ 实用工具向 1.Exchart Star:55.6k Exchart提供了大量精美的图表,只有你想不到,没有你在它上面找不到的&…

了解 JSON 格式

一、JSON 基础 JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种轻量级的数据交换格式,JSON 的设计目的是使得数据的存储和交换变得简单。 JSON 易于人的阅读和书写,同时也易于机器的解析和生成。尽管 J…

8月17日上课内容 LVS+Keepalived群集

本章结构 Keepalived概述 keepalived工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题 在一个LVS服务集群中通常有主服务器 (MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟…

为什么选择elasticsearch分布式搜索引擎

文章目录 🔭什么是elasticsearch🌠ELK技术栈🌠elasticsearch和lucene🌠为什么不是其他搜索技术? 🔭总结 🔭什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎,具备非常…

mini木马实践和防护方法

一、实验目的: 1.了解木马的实现原理 2.了解基本的防护方法 二、预备知识: 木马通常有两个可执行程序:一个是客户端,即控制端;另一个是服务端,即被控制端。植入被种者电脑的是“服务器”部分,而…

linux如何使用keepalived配置VIP

VIP常用于负载均衡的高可用,使用VIP可以给多个主机绑定一个IP,这样,当某个负载应用挂了之后,可以自动切到另一个负载。 我这里是在k8s环境中做的测试,集群中有6个节点,我给140和141两个节点配置VIP。 1. 安…

「2024」预备研究生mem-立体几何截面模型代绝对值得一次和二次函数

一、立体几何截面模型&代绝对值得一次和二次函数 二、练习题 凑配换元

Mysql5.7.36主从同步实操

主库创建同步账户 #创建备份的账户 CREATE USER backup192.168.32.1 IDENTIFIED BY backup123; #给账户授予备份的权限 GRANT REPLICATION SLAVE ON *.* TO backup192.168.32.1; #刷新权限 FLUSH PRIVILEGES;停止主库 配置主库需要的备份参数 打开my.ini文件,配置…

Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理

Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理 目录 Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理 一、Task、async和 await 、Thread 基础概念 1、线程,多线程 2、Task 3、async (await )…

第四章:树形结构的关联式容器(map+set)

系列文章目录 文章目录 系列文章目录前言1、关联式容器与序列式容器1.1 键值对 2、set的介绍3、multiset的介绍3.1 接口count与容器multiset 4、map的介绍4.1 接口insert4.2 operator[]和at 5、multimap的介绍 前言 根据应用场景的不桶,STL总共实现了两种不同结构的…

PBI 之 Query数据导入、处理

PBI梳理数据流程 首先通过Excel 插件 Power Query、Power Pivot处理数据,然后使用Power Desktop导入处理好的数据进行展示。最后发布到在线网站。 一、导入数据 二、处理数据 如下,进入到Power Query编辑器界面 数据--查询&连接 界面区 界面区右键…

ChatGPT产品发布时间表-了解别人家的创业节奏

ChatGPT产品节点-2023年7月末-长期更新 ChatGPT风靡全球,创造了科技史上的发展奇迹。它可以根据简短的提示生成文章、代码等,极大地提高了生产力。许多大品牌正在尝试利用它来生成广告和营销文字。OpenAI也在此技术上大举投资。以下是ChatGPT产品发布时间…

共创无线物联网数字化新模式|协创数据×企企通采购与供应链管理平台项目成功上线

近日,全球无线物联网领先者『协创数据技术股份有限公司』(以下简称“协创数据”)SRM采购与供应链项目全面上线,并于近日与企企通召开成功召开项目上线总结会。 基于双方资源和优势,共同打造了物联网特色的数字化采购供…

运动耳机哪款好用、适合运动的耳机推荐

如今,蓝牙耳机不仅是手机的最佳伴侣,也成为了运动爱好者的必备装备。但是,在如此众多的蓝牙耳机中,你是否对选购感到困惑呢?实际上,选择适合运动的蓝牙耳机需要考虑许多因素,如舒适度、稳固性、…

STM32L151C8T6 芯片数据手册

1. 芯片型号含义 2. Flash: 64KB 3. keil 配置ST-Link 烧录程序 4. keil 选择Flash 烧录算法 5. 系统主频 32Mhz 6. 时钟树 clock tree

2009年下半年 软件设计师 上午试卷3

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

数字化赋能高质量施工,成企业创新转型新方向

建筑行业是一个需要投入大量资金、能源消耗大、风险高且劳动力密集的行业,传统施工管理方式存在着“无法实时控制进度、无法实时控制质量、材料浪费、常需返工、安全事件频发”等问题。 为了自身的转型升级,也为了响应国家战略规划落地对建筑行业提出的要…

java 微信小程序授权获取用户手机号码 (完整demo)

1. 前端获取动态令牌 code https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html 2. 后端接收令牌code, 调用微信获取手机号接口 POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_tokenACCESS_TOKEN 3. con…

Python操作MongoDB数据库

安装MongoDB库 pip install pymongopython 代码 Author: tkhywang 2810248865qq.com Date: 2023-08-21 10:22:30 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-08-21 11:17:45 FilePath: \PythonProject02\MongoDB 数据库.py Description: 这是默认设置,请设置…

JVS低代码:如何触发逻辑并获取外部API数据,接入百度天气查询

了解JVS低代码的小伙伴应该都知道它可以通过API实现数据的入库,但是具体怎么操作的可能还不知道,那今天给大家着重介绍具体的实现流程。 我们以查询百度的天气查询接口,并把对应的数据插入到系统数据模型中为例。 先来看看最后配置实现的效…