Linux 之 Vi 编辑器
文章目录
- 1. vi/vim介绍
- 2. vi/vim使用详解
- 2.1 vi/vim的特点
- 2.2 vi/vim三种编辑模式
- 2.3 文本编辑方式
1. vi/vim介绍
vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。
2. vi/vim使用详解
2.1 vi/vim的特点
- vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等,vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
- vi是一个全屏幕的文本编辑器,在编辑文本时它将占据整个屏幕
2.2 vi/vim三种编辑模式
vi/vim编辑器有三种编辑模式,分别是
- 命令模式
- 输入模式
- 末行模式
| 编辑模式 | 作用 |
|---|---|
| 命令模式 | 用户执行命令,比如复制行、粘贴行等等 |
| 输入模式 | 用于输入文本、修改文本等等 |
| 末行模式 | 用于查找文本、保存修改等等 |
vi/vim三种编辑模式之间转换的方式
命令模式–>输入模式
- i:insert,在当前光标所在字符的前面,转为输入模式
- I:大写的i,在当前光标所在行的行首转换为输入模式
- a:append,在当前光标所在字符的后面转换为输入模式
- A:在当前光标所在行的行尾转换为输入模式
- o:open,在当前光标所在行的下方新建一行并转为输入模式
- O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
输入模式–>命令模式
- ESC
命令模式–>末行模式
- :
末行模式–>命令模式
- ESC ESC
2.3 文本编辑方式
打开文件方式:文件打开后默认处于命令模式下
vim filename //打开文件
vim +n filename //打开文件并定位到第n行
vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首
关闭文件方式:
末行模式关闭文件:
| 命令 | 意义 |
|---|---|
| q! | 不保存退出 |
| wq! | 强行保存并退出 |
| x | 强行保存并退出 |
命令模式关闭文件:
- ZZ
移动光标
| 移动方式 | 指令 | 效果 |
|---|---|---|
| 逐字符移动 | h l j k #h #l #j #k | 向左移动一个字符 向右移动一个字符 向下移动一个字符 向上移动一个字符 向左移动#个字符 向右移动#个字符 向下移动#个字符 向上移动#个字符 |
| 以单词为单位移动 | w e b #w #e #b | 移动到下一个单词的词首 跳至当前或下一个单词的词尾 跳至当前或上一个单词的词首 以当前光标为起点跳至第#个单词的词首 以当前光标为起点跳至第#个单词的词尾 以当前光标为起点跳至第#个单词的词首 |
| 行内跳转 | 0 ^ $ | 数字0,跳转到绝对行首 跳转到行首的第一个非空白字符 跳转到绝对行尾 |
| 行间跳转 | gg G #gg #G | 跳转到第一行 跳转到最后一行 跳转到第#行 跳转到第#行 |
| 翻屏 | ctrl+f ctrl+b | 向下翻一屏 向上翻一屏 |
字符编辑
| 编辑命令 | 意义 |
|---|---|
| x | 删除光标所在处的单个字符 |
| #x | 删除光标所在处及其向后共#个字符 |
| xp | 交换光标所在处的字符及其后面字符的位置 |
删除命令:d
命令模式下d命令常与跳转命令组合使用,如
- d$:表示删除当前光标所在位置到行尾的内容
- d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
- d0:表示删除当前光标所在位置到绝对行首的内容
- #d跳转符:删除跳转符指定范围内的#个,例如
- #dw
- #de
- #db
- dd:删除当前光标所在行整行
- #dd:删除包括当前光标所在行在内的#行
- D:删除当前光标所在行的内容,保留空行
末行模式下d命令的使用
语法::StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:
- 1,5d:表示删除第1到第5行
范围表示方法:
| 表示方法 | 意义 |
|---|---|
| . | 光标所在当前行 |
| $ | 最后一行 |
| +# | 光标所在行往后#行 |
| $-# | 倒数第#行 |
| % | 全文 |
复制命令:yy
粘贴命令:p
- p:小写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的下方
- 若删除或复制的为非整行,则粘贴至光标所在字符的后面
- P:大写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的上方
- 若删除或复制的为非整行,则粘贴至光标所在字符的前面
替换:r
- R:替换模式,替换多个字符
- r#:将当前光标的字符替换为#,这里的#可以是任何字符
撤销编辑:u
- u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
- #u:直接撤销此前的#次编辑操作
- ctrl+r:还原最近一次的撤销操作
重复前一次编辑操作:.
可视化模式:
可视化模式下可以对选取的内容进行前面讲的所有编辑操作
- v:按字符选取内容
- V:按矩形块(行)选取内容
文本查找:
- /pattern:从上往下查找匹配的内容
- ?pattern:从下往上查找匹配的内容
- n:从上往下查找匹配到的内容的下一条
- N:从下往上查找匹配到的内容的下一条
查找并替换:s
s命令只能在末行模式下使用
语法:ADDR1,ADDR2 s/pattern/string/gi
- 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
- 18,28s/^/#/g : 表示把18行到28行的内容注释掉
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
取消匹配常亮
- :noh
ring/gi`
- 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
- 18,28s/^/#/g : 表示把18行到28行的内容注释掉
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
取消匹配常亮
- :noh
相关文章:
Linux 之 Vi 编辑器
文章目录 1. vi/vim介绍2. vi/vim使用详解2.1 vi/vim的特点2.2 vi/vim三种编辑模式2.3 文本编辑方式 1. vi/vim介绍 vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多…...
Python超实用!批量重命名文件/文件夹,只需1行代码
大家好,这里是程序员晚枫,之前在小破站给大家分享了一个视频:批量重命名文件。 最近在程序员晚枫的读者群里,发现很多朋友对这个功能很感兴趣,尤其是对下一步的优化:批量重命名文件夹。 这周我利用下班时…...
sqoop
一、bg 可以在关系型数据库和hdfs、hive、hbase之间导数 导入:从RDBMS到hdfs、hive、hbase 导出:相反 sqoop1 和sqoop2 (1.99.x)不兼容,sqoop2 并没有生产的稳定版本, Sqoop1 import原理(导入) 从传统数据库获取元数据信息&…...
PySpark 数据操作(综合案例)
搜索引擎日志分析 要求: 读取文件转换成RDD,并完成: 打印输出:热门搜索时间段(小时精度)Top3打印输出:热门搜索词Top3打印输出:统计黑马程序员关键字在哪个时段被搜索最多将数据转…...
产品经理如何平衡用户体验与商业价值?
近期负责前端产品设计工作的小李忍不住抱怨:公司总是要求客户第一,实现客户良好体验,但在实际操作过程中,面向用户 体验提升的需求,研发资源计划几乎很难排上,资源都放在公司根据业务价值排序的需求…...
【PostgreSQL】系列之 一 CentOS 7安装PGSQL15版本(一)
目录 一、何为PostgreSQL? 二、PostgreSQL安装 2.1安装依赖 2.2 执行安装 2.3 数据库初始化 2.4 配置环境变量 2.5 创建数据库 2.6 配置远程 2.7 测试远程 三、常用命令 四、用户创建和数据库权限 一、何为PostgreSQL? PostgreSQL是以加州大学…...
Nginx解决文件服务器文件名显示不全的问题
Nginx可以搭建Http文件服务器,但默认的搭建会长文件名显示不全,比如如下: 问题:显示不全,出现...,需要进行解决 这里使用重新编绎nginx的方式,见此文: https://unix.stackexchange…...
IO进程线程第四天(8.1)
作业1: 从终端获取一个文件的路径以及名字。 若该文件是目录文件,则将该文件下的所有文件的属性显示到终端,类似ls -l该文件夹 若该文件不是目录文件,则显示该文件的属性到终端上,类似ls -l这单个文件 #include<…...
WAF绕过-权限控制篇-后门免杀
WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段。 1、什么是WAF? Web Application Firewall(web应用防火墙),一种公认的说法是“web应用防火墙通过执行一系列针对HTTP/HTTPS的安…...
LED灯的驱动,GPIO子系统,添加按键的中断处理
1.应用程序发送指令控制LED亮灭 2.按键1 按下,led1电位反转 按键2按下,led2电位反转 按键3 按下,led3电位反转 驱动程序: #include <linux/init.h> #include <linux/module.h> #include<linux/of.h> #include…...
Gradle和Maven的区别
Gradle和Maven 当涉及到构建和管理项目时,Gradle和Maven是两个非常流行的选项。本文将讨论Gradle和Maven之间的区别以及它们的配置信息差异。 1. Gradle和Maven的区别 1.1 构建脚本语言 Maven使用XML作为构建脚本语言,而Gradle使用基于Groovy的DSL&…...
C#中 使用yield return 优化大数组或集合的访问
概要 我们在开发过程中,经常需要在一个很大的数组或集合中搜索元素,以满足业务需求。 本文主要介绍通过使用yield return的方式,避免将大量数据全部加载进入内存,再进行处理。从而提高程序的性能。 设计和实现 基本业务场景&a…...
ROS实现导航中止(pub命令版+C++代码版)
pub命令 rostopic pub /move_base/cancel actionlib_msgs/GoalID -- {}C代码: stop_navigation.cpp #include <ros/ros.h> #include <geometry_msgs/Twist.h> #include <nav_msgs/Odometry.h> #include <sys/time.h> #include <unistd…...
【VTK】读取一个 STL 文件,并使用 Qt 显示出来,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 文章目录 A.hA.cppRef. 直接先把效果放出来,有需要就往下看。 A.h // A.h #pragma once#include <QtWidgets/QMainWindow> #include "…...
数据结构--基础知识
数据结构是什么? 数据结构是计算机科学中研究数据组织、存储和管理的方法和原则。它涉及存储和操作数据的方式,以便能够高效地使用和访问数据。 相关内容 基本组成 数组(Array):数组是一种线性数据结构,…...
天工开物 #7 Rust 与 Java 程序的异步接口互操作
许多语言的高性能程序库都是建立在 C/C 的核心实现上的。 例如,著名 Python 科学计算库 Pandas 和 Numpy 的核心是 C 实现的,RocksDB 的 Java 接口是对底层 C 接口的封装。 Rust 语言的基本目标之一就是替代 C 在这些领域的位置,为开发者提供…...
python实现视频转GIF动图(无水印,包含代码详解和.exe执行文件)
该代码提供了一个简单的界面,允许用户将视频转换为GIF动画,并且可以自定义采样率、GIF帧率和输出大小。修改后的代码将视频帧的大小调整为固定的尺寸,并在生成GIF动画时保持这个尺寸。 一、核心代码实现 核心代码如下: import c…...
一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql
一套AI医疗模式的医院智慧导诊系统源码 相关技术: 技术架构:springbootredismybatis plusmysqlRocketMQ 开发语言:java 开发工具:IDEA 前端框架:Uniapp 后端框架:springboot 数 据 库:mys…...
Android 使用modbus协议与可能遇到的问题解决一览
目录 前言一、导入模块二、协议相关1. CRC162. ByteUtil3. ModbusError4. ModbusErrorType5. ModbusFunction6. ModbusRtuMaster7. ByteArrayWriter8. ModbusRtuSerialPortUtil9. ModbusRtuMasterHelp 三、使用总结 前言 本篇文章主要演示android的串口通讯功能,其…...
Virtualbox虚拟机中Ubuntu忘记密码
1、首先重新启动Ubuntu系统,鼠标快速点一下Virtualbox虚拟机窗口获取焦点,然后按住shift键,以调出grub启动菜单。 2、根据提示按下键盘E键进入编辑模式,向下移动光标,将如下"ro quiet splash $vt_handoff"部…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
