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

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&#xff1a; 从终端获取一个文件的路径以及名字。 若该文件是目录文件&#xff0c;则将该文件下的所有文件的属性显示到终端&#xff0c;类似ls -l该文件夹 若该文件不是目录文件&#xff0c;则显示该文件的属性到终端上&#xff0c;类似ls -l这单个文件 #include<…...

WAF绕过-权限控制篇-后门免杀

WAF绕过主要集中在信息收集&#xff0c;漏洞发现&#xff0c;漏洞利用&#xff0c;权限控制四个阶段。 1、什么是WAF&#xff1f; Web Application Firewall&#xff08;web应用防火墙&#xff09;&#xff0c;一种公认的说法是“web应用防火墙通过执行一系列针对HTTP/HTTPS的安…...

LED灯的驱动,GPIO子系统,添加按键的中断处理

1.应用程序发送指令控制LED亮灭 2.按键1 按下&#xff0c;led1电位反转 按键2按下&#xff0c;led2电位反转 按键3 按下&#xff0c;led3电位反转 驱动程序&#xff1a; #include <linux/init.h> #include <linux/module.h> #include<linux/of.h> #include…...

Gradle和Maven的区别

Gradle和Maven 当涉及到构建和管理项目时&#xff0c;Gradle和Maven是两个非常流行的选项。本文将讨论Gradle和Maven之间的区别以及它们的配置信息差异。 1. Gradle和Maven的区别 1.1 构建脚本语言 Maven使用XML作为构建脚本语言&#xff0c;而Gradle使用基于Groovy的DSL&…...

C#中 使用yield return 优化大数组或集合的访问

概要 我们在开发过程中&#xff0c;经常需要在一个很大的数组或集合中搜索元素&#xff0c;以满足业务需求。 本文主要介绍通过使用yield return的方式&#xff0c;避免将大量数据全部加载进入内存&#xff0c;再进行处理。从而提高程序的性能。 设计和实现 基本业务场景&a…...

ROS实现导航中止(pub命令版+C++代码版)

pub命令 rostopic pub /move_base/cancel actionlib_msgs/GoalID -- {}C代码&#xff1a; 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

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 A.hA.cppRef. 直接先把效果放出来&#xff0c;有需要就往下看。 A.h // A.h #pragma once#include <QtWidgets/QMainWindow> #include "…...

数据结构--基础知识

数据结构是什么&#xff1f; 数据结构是计算机科学中研究数据组织、存储和管理的方法和原则。它涉及存储和操作数据的方式&#xff0c;以便能够高效地使用和访问数据。 相关内容 基本组成 数组&#xff08;Array&#xff09;&#xff1a;数组是一种线性数据结构&#xff0c;…...

天工开物 #7 Rust 与 Java 程序的异步接口互操作

许多语言的高性能程序库都是建立在 C/C 的核心实现上的。 例如&#xff0c;著名 Python 科学计算库 Pandas 和 Numpy 的核心是 C 实现的&#xff0c;RocksDB 的 Java 接口是对底层 C 接口的封装。 Rust 语言的基本目标之一就是替代 C 在这些领域的位置&#xff0c;为开发者提供…...

python实现视频转GIF动图(无水印,包含代码详解和.exe执行文件)

该代码提供了一个简单的界面&#xff0c;允许用户将视频转换为GIF动画&#xff0c;并且可以自定义采样率、GIF帧率和输出大小。修改后的代码将视频帧的大小调整为固定的尺寸&#xff0c;并在生成GIF动画时保持这个尺寸。 一、核心代码实现 核心代码如下&#xff1a; import c…...

一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql

一套AI医疗模式的医院智慧导诊系统源码 相关技术&#xff1a; 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 开发语言&#xff1a;java 开发工具&#xff1a;IDEA 前端框架&#xff1a;Uniapp 后端框架&#xff1a;springboot 数 据 库&#xff1a;mys…...

Android 使用modbus协议与可能遇到的问题解决一览

目录 前言一、导入模块二、协议相关1. CRC162. ByteUtil3. ModbusError4. ModbusErrorType5. ModbusFunction6. ModbusRtuMaster7. ByteArrayWriter8. ModbusRtuSerialPortUtil9. ModbusRtuMasterHelp 三、使用总结 前言 本篇文章主要演示android的串口通讯功能&#xff0c;其…...

Virtualbox虚拟机中Ubuntu忘记密码

1、首先重新启动Ubuntu系统&#xff0c;鼠标快速点一下Virtualbox虚拟机窗口获取焦点&#xff0c;然后按住shift键&#xff0c;以调出grub启动菜单。 2、根据提示按下键盘E键进入编辑模式&#xff0c;向下移动光标&#xff0c;将如下"ro quiet splash $vt_handoff"部…...

提升开发效率与视觉舒适度:LxgwWenKai字体全场景配置指南

提升开发效率与视觉舒适度&#xff1a;LxgwWenKai字体全场景配置指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目&#xff0c;提供了多种版本的字体文件&#xff0c;适用于不同的使用场景&#xff0c;包括屏幕阅读、轻便版、GB规范字形和TC旧字形版。…...

闽北哥-做个无用之人,方成大用

做个无用之人 ——方成大用 “太有用的人&#xff0c;一定走不远。” &#x1f33f; 人生是一场‘无心生大用’的修行。 白木香树越能结香&#xff0c;越被千疮百孔&#xff1b; 无用之树&#xff0c;反得自然生长。 &#x1f4a1; 真正的价值&#xff0c;不在“有”&#xff…...

别再纠结模型了!用Python+Simulink快速搭建四旋翼无人机仿真(附完整代码)

用PythonSimulink快速搭建四旋翼无人机仿真实战指南 四旋翼无人机开发中最令人头疼的环节&#xff0c;往往不是控制算法设计&#xff0c;而是如何快速搭建一个可靠的仿真环境。我曾见过不少团队在模型选择上耗费数周时间&#xff0c;最终却陷入理论完美主义陷阱——他们反复纠结…...

PCB数据处理利器:从安装到实战的全方位指南

PCB数据处理利器&#xff1a;从安装到实战的全方位指南 【免费下载链接】pcb-tools Tools to work with PCB data (Gerber, Excellon, NC files) using Python. 项目地址: https://gitcode.com/gh_mirrors/pc/pcb-tools 1. 项目价值解析 PCB Tools作为一款专注于印制电…...

LeetDown完全指南:系统降级功能解决A6/A7设备用户的卡顿痛点

LeetDown完全指南&#xff1a;系统降级功能解决A6/A7设备用户的卡顿痛点 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown LeetDown是一款专为macOS设计的图形化降级工具&#xff0…...

brpc并发编程模型性能对比:基准测试结果

brpc并发编程模型性能对比&#xff1a;基准测试结果 【免费下载链接】brpc brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. &…...

s2-pro音色复用效果实测:不同参考音频时长(3s/10s/30s)对合成质量影响

s2-pro音色复用效果实测&#xff1a;不同参考音频时长&#xff08;3s/10s/30s&#xff09;对合成质量影响 1. 引言 s2-pro作为Fish Audio开源的专业级语音合成模型镜像&#xff0c;其音色复用功能在实际应用中表现如何&#xff1f;本文将针对一个关键问题展开实测&#xff1a…...

别再纠结在线辨识了!聊聊永磁同步电机(PMSM)离线参数自学习的完整流程与避坑指南

永磁同步电机离线参数辨识实战&#xff1a;从理论到工程落地的全流程解析 在电机控制领域&#xff0c;参数辨识一直是个让人又爱又恨的话题。尤其是当项目从实验室走向量产时&#xff0c;那些在仿真中运行良好的算法&#xff0c;往往会因为实际电机参数的偏差而表现失常。我曾亲…...

SpringBoot 接口全维度性能优化指南

文章目录&#xff1a; 前言 一、背景 1.1 为什么必须做 SpringBoot 接口优化&#xff1f; 1.2 接口优化的核心目标 1.3 本文适用范围 二、核心原理 2.1 接口请求全流程&#xff08;瓶颈定位核心&#xff09; 2.2 核心优化原理总览 2.3 优化优先级&#xff08;生产环境…...

泛微Ecology流程数据查询避坑指南:workflow_currentoperator表里isremark字段到底怎么用?

泛微Ecology流程数据查询实战&#xff1a;解密workflow_currentoperator表关键字段 在泛微Ecology系统的二次开发过程中&#xff0c;流程数据的精准查询往往是开发者面临的第一道门槛。特别是当需要对接第三方系统或构建定制化报表时&#xff0c;对workflow_currentoperator表中…...