Linux:文本编辑器 - vim

Linux:文本编辑器 - vim

    • vim基本操作
    • 普通模式
      • 模式切换
      • 移动光标
      • 复制粘贴
      • 删除
      • 替换
      • 撤销
    • 底行模式
      • 行号
      • 查找


vim基本操作

Vim(Vi Improved)是一款功能强大的文本编辑器,是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器,后来经过不断完善和扩展而发展成为Vim。

Vim的主要特点包括:

  • 高度可配置和扩展性:Vim支持大量插件和脚本,用户可以根据需求自定义Vim的行为。
  • 高效的编辑模式:Vim采用基于模式的编辑方式,用户可以通过键盘命令快速完成各种编辑操作。
  • 跨平台:Vim支持多种操作系统,包括Linux、macOS和Windows。
  • 丰富的功能:Vim提供了语法高亮、代码折叠、多缓冲区编辑等强大的编辑功能。

Vim是一款功能强大、高度可定制的文本编辑器,广泛应用于各种编程和文本编辑场景。它的发展历程也体现了开源软件不断创新和完善的过程。

使用vim前,如果你没有下载过,可以执行以下指令下载vim:

yum install -y vim

执行该指令需要root权限,要么加上sudo进行提权,要么以root身份执行。

下载好vim后,我们就可以用它来编辑文本了,vim既可以直接编辑现有文本,也可以直接创建一个不存在的文件

语法为:

vim 文件名

比如在此我要编辑一个test.c的文件,就输入vim test.c,打开后界面如下:

在这里插入图片描述

这个时候你还不能编辑,vim是有多种模式的,默认情况下处于普通模式。此时不能编辑文本,如果想要书写文本,要进入插入模式只需要按一下i,就可以从普通模式进入插入模式。此时你的左下角会有INSERT样式,说明你成功进入了插入模式。

在这里插入图片描述

现在你就可以正常编辑代码了,我这里写一个简单的C语言代码:

在这里插入图片描述

那么要如何退出保存呢?想要退出保存,就先进入底行模式,而当前的插入模式不能直接进入底行模式,要先按下Esc键回到普通模式。当你左下角的INSERT消失了,就说明你退出插入模式了,如果想从普通模式进入底行模式,按下shift + ;,其实也就是按下一个,此时你会发现你的光标跳转到了底部,并且底部多出了一个冒号:

在这里插入图片描述

说明你成功进入底行模式了,先教两个基本的命令:

w:保存当前修改
q:退出

一般来说,我们会选择保存并退出,此时只需要把两个字母一起输入即可wq

在这里插入图片描述

再摁下Enter键,表示执行该指令,此时我们就可以退出vim了。如果你这个文件原先就存在于目录中,你可以用cat试试有没有修改成功,如果你这个文件是直接通过vim创建的,那么你可以使用ls看看该文件有没有创建出来。

在我的目录下,已经有该文件,并且写入成功了:

在这里插入图片描述

我们简单讲解完了vim的三个模式:

Vim有以下几种主要的工作模式:

  1. 普通模式(Normal mode):
  • 这是Vim的默认模式。
  • 在这个模式下,键盘输入的字符被解释为命令,而不是插入文本。
  • 用户可以使用各种快捷键进行文本编辑、光标移动、文件操作等。
  1. 插入模式(Insert mode):
  • 在这个模式下,键盘输入的字符会被直接插入到文档中。
  • 用户可以输入新的文本,编辑现有文本。
  • 通过按下 iao 等命令可以进入插入模式。
  1. 底行模式(Command-line mode):
  • 在这个模式下,用户可以输入Vim的各种命令,如保存、退出、查找替换等。
  • 通过按下 :shift + ;)进入命令行模式。

接下来我就详细讲解各个模式下的操作。


普通模式

模式切换

vim有非常多种模式,而普通模式是所有模式的枢纽,不论进入任何一种模式,都要先回到普通模式。插入模式,底行模式等等各种模式想要切回普通模式,都是按Ecs

普通模式进入插入模式

i:从光标位置开始编辑文本
a:从光标位置的下一个位置开始编辑文本
o:在光标位置插入新的一行,并从行首开始编辑文本

普通模式进入底行模式

:,也就是shift + ;


移动光标

处于普通模式时,有很多快速移动光标的键位:

键位功能
h光标向左移动,相当于
j光标向下移动,相当于
k光标向上移动,相当于
l光标向右移动,相当于
Gshift + g光标移动到文本末尾
#G# + shift + g光标移动到第#
$shift + 4光标移动到当前行末尾
^shift + 6光标移动到当前行开头
w以单词为单位,光标移动到下一个单词开头
b以单词为单位,光标移动到上一个单词开头
#l光标移动到该行第#个位置
gg光标移动到文本开始

复制粘贴

键位功能
dd剪切当前光标所在行
#dd剪切当前光标开始的#
yw把光标所处的单词,复制到缓冲区
#yw把光标开始的#个单词,复制到缓冲区
yy把光标所处的行,复制到缓冲区
#yy把光标开始的#行,复制到缓冲区
p将缓冲区的内容,复制到光标开始的位置
#p将缓冲区的内容,复制到光标开始的位置,连续复制#

删除

键位功能
x删除光标所在的字符
#x删除光标开始的#个字符
Xshift + x删除光标前一个字符
#X# + shift + x删除光标前#个字符

替换

键位功能
r + xxx将光标所处的字符替换为xxx
#r + xxx将光标开始的#个字符替换为xxx

这里要介绍另外一个模式,替换模式,按下shift + r就可以进入替换模式。此时输入的所有内容都会直接覆盖原先的内容,同样的如果需要退出,按Esc即可回到普通模式。


撤销

键位功能
u撤销上一次操作

底行模式

进入底行模式,按下shift + 即可,然后在:后面输入指令。

行号

输入set nu:在文件的每一行前列出行号
输入set nonu:取消每一行前的行号

效果如下:

在这里插入图片描述


查找

/xxx:查找xxx字符串,如果不是当前在字符串,按n会跳到下一个该字符串

比如输入/hello

在这里插入图片描述

其就会高亮标注所有匹配的字符串,此时再按下n,光标就会跳转到下一个字符串。不过这个高亮是不会自己消除的,不论你后面进入什么模式,这个高亮都会一直存在。

此时就要输入以下指令:

noh:取消高亮


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

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

相关文章

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信: 文章提供整体代码、解释、测试效果截图、整体测试工程下载: 主要包含的知识有:下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…

为了进阿里拿Offer,逼得我两个月吃透了这些Java高级面试题解析,终于上岸

JVM与调优 21 题及答案解析 JVM的内存结构。 JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。 JVM的栈中引用如何和堆中的对象产生关联。 可以了解一下逃逸分析技术。 gc的常见算法 CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the wo…

前端解决跨域问题

什么是跨域? 跨域是浏览器行为,是浏览器的一种安全策略;由于浏览器 同源策略 导致浏览器访问服务器时被拦截 同源策略(Sameoriginpolicy): 是一种约定,它是浏览器最核心也最基本的安全功能&am…

51.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色选择的模拟与截取

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:如果看不懂、不知道现在做的什么,那就跟着做完看效果&…

制造业、能源等传统行业进行数字化转型时要注意哪些问题?

制造业、能源等传统行业在进行数字化转型时需要注意以下几个关键问题: 1、明确转型目标和战略规划:企业需要根据自身的业务特点、市场需求和长远发展目标,制定清晰的数字化转型战略。包括确定转型的重点领域、预期成果、时间表和资源投入。 …

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

计算分数和-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第48讲。 计算分数和&#…

java并发体系-锁

ReentrantLock ReentrantLock是Java并发编程中的一种锁机制。它的基本流程如下: 创建ReentrantLock对象。在需要加锁的代码块前调用lock()方法,该方法会尝试获取锁,如果锁已被其他线程占用,则当前线程会被阻塞。执行需要加锁的代…

redis架构知识点

Redis 在规模如下: 机器内存总量约70TB,实际使用内存约40TB;平均每秒处理约1500万次请求,峰值每秒约2000万次请求;每天处理约1万亿余次请求;单集群每秒处理最高每秒约400万次请求;集群实例与单机…

3 突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …

[dvwa] sql injection(Blind)

blind 0x01 low 1’ and length(version()) 6 # syntax: substr(string , from<start from 1>, cut length) 1’ and substr(version(),1,1) ‘5’ # 1’ and substr(version(),2,1) ‘.’ # 1’ and substr(version(),3,1) ‘7’ # 1’ and substr(version(),4,…

leetcode 322

leetcode 322 题目 例子 思路 记忆化搜索&#xff0c;使用数组&#xff0c;记录val的最少硬币数量&#xff1b; 递归加bfs; 代码实现 #include <vector> #include <climits> // For INT_MAX #include <algorithm> // For minclass Solution { public:int…

C#下Httpclient post请求获取令牌

1.postman测试ok 2.C#代码 public static async Task<string> testGetToken(string URL, string param){string responseBody "eee";//using (var clientHandler new HttpClientHandler()){ var handler new HttpClientHandler();handler.ServerCertificat…

响应实践!赛宁网安亮相第二届全国先进技术成果转化大会

4月8日&#xff0c;第二届全国先进技术成果转化大会&#xff08;以下简称“大会”&#xff09;在苏州隆重举行。大会由江苏省国防科学技术工业办公室、苏州市人民政府、先进技术成果长三角转化中心主办。赛宁网安作为全球一流数字孪生靶场服务商&#xff0c;携数字孪生靶场、网…

软件测试面试准备—综合面

技术面试过了之后&#xff0c;HR约综合面&#xff0c;其实面之前我不太确定是不是HR面&#xff0c;以及会有哪些人&#xff0c;所以还是整理了下问题。有些问题附上答案&#xff0c;有些问题需要结合自己的工作场景来发挥。我参与的这家公司的综合面是HR来面的&#xff0c;其实…

python学习——re库的常用函数

参考资料&#xff1a;python网络爬虫技术与应用【邓维】 1、match() 从字符串头部开始匹配字符。 import re content"The123456ismyonephonenumber." # 字符串长度 print(len(content)) # 使用match匹配&#xff0c;第一个参数为正则表达式&#xff0c;第二个参数…

未来驾驶的革命:自动驾驶技术与智能交通系统的崛起

虽然自动驾驶技术和智能交通系统的开发似乎是资本密集型且技术要求高的领域&#xff0c;主要由大型企业主导&#xff0c;但普通创业者仍有机会从多个角度切入这一领域。以下是一些创业机会的思路&#xff1a; 1. 软件解决方案和应用开发 数据分析和处理工具 在自动驾驶技术领域…

element-ui的按需引入报错解决:MoudleBuildFailed,完整引入和按需引入

官网&#xff1a; Element - The worlds most popular Vue UI framework 1.完整引入 &#xff08;1&#xff09;下载&#xff1a; npm i element-ui -S &#xff08;2&#xff09;引入&#xff1a; 在 main.js 中写入以下内容&#xff1a; import Vue from vue; impor…

MLT媒体程序框架02:源码剖析

以MLT自带的Melt命令行工具源码为例 去掉一些不重要的代码 melt.c int main(int argc, char **argv) {int i;mlt_consumer consumer NULL;FILE *store NULL;char *name NULL;mlt_profile profile NULL;int is_progress 0;int is_silent 0;int is_abort 0;int is_getc …

javascript中创建变量的方式 与 var和let有什么区别

一、创建变量的7种方式&#xff1a; 1、var 2、function 创建变量&#xff08;函数名是一个变量 3、let 4、const 创建常量 5、import 基于es6 的模块规范导出需要的信息 6、class 基于 es6 创建的类 7、Symbol 创建唯一值 二…