vi编辑器的用法linux中的vim编辑器大全

vim的介绍

vi 和 vim 命令是linux中强⼤的⽂本编辑器, 由于Linux系统⼀切皆⽂件,⽽配置⼀个服务就是在修改其配置⽂件的参数。 vim 编辑器是运维⼯程师必须掌握的⼀个⼯具, 没有它很多⼯作都⽆法完成。
其中有vivim两种

vi和vim的区别

Vim是Vi的升级版本,不仅兼容Vi的所有指令,还增加了许多新特性。Vim和Vi的主要区别包括:
1.多级撤消。在Vi中,按u只能撤消上次命令,而在Vim中可以无限制地撤消操作。
平台兼容性。Vi主要运行于Unix系统;Vim不仅可以在Unix上运行,还可以在Windows、Mac等多个操作系统上运行。

2.语法高亮。Vim可以以不同的颜色加亮显示代码,这有助于提高阅读和编辑的便利性。
可视化操作。Vim不仅可以在终端运行,还可以在X Window、Mac OS、Windows等环境下运行,提供更丰富的编辑环境。

总的来说,Vim相比Vi是一个更先进、功能更丰富的文本编辑器,特别适合编程和开发使用。

安装方式:

1. vi不需要安装,直接可以使用
2. vim 用yum装  `yum install -y vim` 即可

vim模式介绍

Vim编辑器中设置了三种模式: 命令模式、编辑模式、末⾏模式,每种模式分别⼜⽀持多种不同的命令快捷键,⼤⼤提⾼了⼯作效率,⽽且⽤户在习惯之后也会觉得相当顺⼿。要想⾼效率地操作⽂本,就必须先搞清这三种模式的操作区别以及模式之间的切换⽅法。
在这里插入图片描述

命令模式: 控制光标移动, 可对⽂本进⾏复制、粘贴、删除等⼯作。
使⽤vim filename 编辑⼀个⽂件时,⼀进⼊该⽂件就是命令模式了。
在这个模式下,可以进⾏光标移动、复制、删除、粘贴操作。编辑模式: 正常的⽂本写⼊。
从命令模式进⼊编辑模式,只需你按⼀个键即可(i, I, a, A, o, O, r, R)。
当进⼊编辑模式时,会在屏幕的最下⼀⾏出现“INSERT的字样。
从编辑模式回到命令模式只需要按键盘左上⽅的 ESC 键即可。末⾏模式: 保存或退出⽂档,以及设置编辑环境
在命令模式下,输⼊ ":" 或者 "/" 即可进⼊末⾏模式。
在该模式下,可以进⾏的操作有,显示⾏号、搜索、替换、保存、退出。

vim 编辑器配置⽂件整体流程如下:
1.默认打开⽂件处于命令模式
2.需要从命令模式切换⾄编辑模式
3.编辑模式修改配置⽂件, 然后返回命令⾏模式.
4.最后通过命令模式进⼊末⾏模式,保存和退出操作.
注意:在vim中,⽆法直接从编辑模式切换到末⾏模式

vim命令模式

命令⾏模式:(默认打开⽂件进⼊的是命令⾏模式)

//命令光标跳转
G			跳转光标⾄末端
gg		跳转光标⾄顶端
Ngg	跳转光标⾄当前⽂件内的22⾏
$			将当前光标跳转⾄光标所在⾏的末端(尾部)
^			将当前光标跳转⾄光标所在⾏的头部		—>	数字0 可实现类似效果
//⽂件内容较多
ctrl+f		往下翻⻚(⾏⽐较多)		
ctrl+b		往上翻⻚
//复制				
yy复制当前光标所在的⾏
5yy复制当前光标以及光标向下4//粘贴		
p(⼩写) 粘贴⾄当前光标下⼀⾏			
P(⼤写) 粘贴⾄当前光标上⼀⾏
//删除			
dd		删除当前光标所在的⾏			
4dd	删除当前光标所在的⾏以及往下的3⾏
dG		删除当前光标以后的所有⾏
D			删除当前光标及光标以后的内容		
x			删除当前光标标记往后的字符
X			删除当前光标标记往前的字符
//剪贴
先删除dd(number	dd),后粘贴p
//撤销
u			撤销上⼀次的操作(类似windows下的ctrl+z)
//替换				
r			替换当前光标标记的单个字符
R			进⼊REPLACE模式,	连续替换,ESC结束

vim编辑模式

编辑模式(从命令⾏模式进⼊到编辑模式)

i			进⼊编辑模式,光标不做任何操作
VIM编辑模式
I			进⼊编辑模式,并且光标会跳转⾄本⾏的头部
a			进⼊编辑模式,将当前光标往后⼀位
A			进⼊编辑模式,将光标移动⾄本⾏的尾部
o			进⼊编辑模式,并在当前光标下添加⼀⾏空⽩内容
O			进⼊编辑模式,并在当前光标上添加⼀⾏空⽩内容

vim末行模式

末⾏模式主要⽤于搜索, 保存, 退出⽂件, 还可以让⽤户执⾏外部的Linux命令或跳转到所编写⽂档的特定⾏数
末⾏模式(必须退回到命令⾏模式)

E37: No	write	since	last	change	(add	!	to	override)
:w						保存当前状态
:w!					强制保存当前状态
:q						退出当前⽂档(⽂档必须保存才能退出)
:q!					强制退出⽂档不会修改当前内容
:wq					先保存,在退出
:wq!				强制保存并退出
:x						先保存,在退出
ZZ						保存退出,	shfit+zz
:number 跳转⾄对应的⾏号

末⾏模式(查找和替换)

查找	    /string	需要搜索的内容(查找)n 按搜索到的内容依次往下进⾏查找N 按搜索到的内容依次往上进⾏查找
替换:1,5s#sbin#test#g			替换1-5⾏中包含sbin的内容为test:%s#sbin#test#g 替换整个⽂本⽂件中包含sbin的替换为test:%s#sbin#test#gc		替换内容时时提示是否需要替换
另存
:w	/root/test		将⽂件所有内容另存为/root/test读⼊
:r		/etc/hosts		读⼊/etc/hosts⽂件⾄当前光标下⾯
:5r	/etc/hosts		指定/etc/hosts⽂件当前⽂件的哪⾏下⾯

VIM视图模式

视图模式(从命令⾏模式进⼊视图模式)

ctrl+v	进⼊VISUAL	BLOCK	选中需要注释的⾏(可视块模式)1.插⼊:按shift+i进⼊编辑模式,输⼊#,结束按ESC键2.删除:选中内容后,按x或者d键删除3.替换:选中需要替换的内容,	按下r键,然后输⼊替换后的内容
shift+v	进⼊VISUAL	LINE	选中⾏内容(可视⾏模式)1.复制:选中⾏内容后按y键及可复制。2.删除:选中⾏内容后按d键删除。

VIM环境变量

1.环境变量临时⽣效

:set	nu	显示⾏号
:set	ic	忽略⼤⼩写,	在搜索的时候有⽤
:set	ai	⾃动缩进
:set list			显示制表符(空⾏、tab键)
:set no[nu|ic|ai…]		取消临时设定的变量
环境变量永久⽣效
~/.vimrc	个⼈环境变量(优先级⾼)	/etc/vimrc		全局环境变量

2.环境变量永久生效

#	vim		~/.vimrc			
set nu
set	ic
//如果个⼈vim环境没有配置,	则使⽤全局vim环境变量配置。
//如果个⼈vim环境和全局环境变量产⽣冲突,	优先使⽤个⼈vim环境变量。

vim拓展

1.如何同时编辑多个⽂件
vim	-o	file1	file2	⽔平分割
vim	-O	file1	file2	垂直分割
//ctrl+ww	⽂件间切换2.相同⽂件之间差异对⽐
diff		⽂件对⽐(⽤的不多)				
vimdiff		以vim⽅式打开两个⽂件对⽐,标记不同的内容3.如果VIM⾮正常退出 (ctrl+z)挂起或强制退出终端没关闭VIM后
//删除同⽂件名的.swp⽂件即可解决
.filename.swp			rm	-f	.filename.swp

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

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

相关文章

【QT学习】9.绘图,三种贴图,贴图的转换

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

【Linux】学习记录_14_线程

14 线程 14.1 线程和进程 进程是资源管理的最小单位,每个进程都有数据段、代码段和堆栈段,进程切换时都有复杂的上下文切换等动作。进程切换上下文时, 需要重新映射虚拟地址空间、进出OS内核、寄存器切换,还会干扰处理器的缓存机…

11408知识点集合

文章目录 一、数学(一) 高数0.初等数学补充1.函数、极限、连续2.导数3.中值定理4.积分5.微分方程6.空间解析几何7.多元微分8.重积分9.曲线曲面积分10.无穷级数11.其他杂记(二) 线代0.串联各章的等价条件1.行列式、矩阵的秩、矩阵的初等变换2.向量3.方程组、矩阵方程AXB4.特征值…

第G8周:ACGAN任务

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 参考论文 这周主要任务就是根据之前GAN,CGAN,SGAN网络架构搭建…

python_django中小学家校互动系统vue_flask家校联系

实现了一个完整的家校互动系统,其中主要有作业信息模块、学校管理员模块、学生学籍模块、学生成绩模块、学科模块、系统新闻模块、系统公告模块、校内新闻模块、校内公告模块、用户表模块、token表模块、关于我们模块、收藏表模块、年级模块、家长模块、教师模块、互…

Spark Standalone模式部署

准备至少2台虚拟机,装好linux系统,我装的是Ubuntu20.04。 1.修改主机名(每台) 1)修改/etc/hostsname内容,主节点改为master,子节点改为slaver1 sudo vim /etc/hostname 2)在/etc/…

如何通过外发文件控制,保障企业对核心业务数据的控制力?

外发文件控制是企业数据安全管理的重要组成部分,它涉及到对从企业内网向外发送的文件进行严格控制和管理,以防止敏感或机密信息的泄露。以下是常见的一些外发手段及问题: (1)IM通讯工具 如微信、QQ、企业微信、钉钉、…

如何通过文件外发管理系统,保护企业机密数据不外泄?

在互联网时代,企业与外界进行频繁的信息沟通已成为必要的一种业务模式,而在交互的过程中很可能会涉及到企业的相关敏感信息,一旦不慎流出就将会面临失控的风险。像员工在掌握了公司的关键信息后另起炉灶,设立同类型公司&#xff0…

每个开发人员都应该知道的13个Nodejs库

Node.js,作为一种广受推崇的后端JavaScript环境,已成为众多网络开发者的首选。它不仅位列全球最流行编程语言之一,还通过JavaScript库的代码复用功能,极大地提升了项目开发效率。然而,面对众多选项,挑选合适…

ArrayList与顺序表(2)

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x1…

归并排序精讲

一.定义 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子…

C++ 虚表起源

本文会让看不见 摸不着的虚表(Vtable),虚指针(Vptr)彻底现行 本文涉及思想: C 面向对象 封装 继承 多态 中的 多态 概念解释: 虚表指针: 这是指向虚表(vtable)的指针,虚表中包含了该类的所有虚函数对应的地址。 虚表&#x…

外贸客户开发有用的软件

外贸客户开发过程中,选择合适的软件工具能够显著提升效率和效果。以下是一些对外贸客户开发非常有用的软件: CRM系统: Salesforce:全球领先的CRM平台,提供强大的客户关系管理、市场分析、销售自动化等功能,…

vue基础语法学习

Object.defineProperty方法的使用 // 这是一个普通的对象 let phone {} // 给这个phone新增一个属性 三个参数:新增属性的对象,新增啥属性,属性值,key value对 Object.defineProperty(phone,color,{value:太空灰, //设置属性值wr…

Axure糖尿病健康管理APP原型 (知识科普/病友社区/远程医生会诊/购物商城/血糖监测/饮食监测)

作品概况 页面数量:共 50 页 源文件格式:rp格式,兼容 Axure RP 9/10,非程序软件无源代码 应用领域:医疗健康、慢病管理、糖尿病管理 作品特色 本作品为Axure糖尿病健康管理APP端原型图,设计规范内容清晰…

深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)

目录 成员函数种类 虚函数的实现 单一继承下的虚函数 接下来我将持续更新“深度解读《深度探索C对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,或文章末尾扫描二维码,自动获得推文…

邮件接口的安全性如何保障?如何有效使用?

邮件接口故障时如何处理?怎么设置和配置邮件接口? 邮件接口作为企业内外部沟通的重要桥梁,其安全性显得尤为重要。那么,邮件接口的安全问题如何保障。AokSend将深入探讨如何保障邮件接口的安全性,确保企业信息的安全传…

什么是仪器校准报告?

在科学实验和工业生产中,仪器是一种非常重要的辅助工具,无论是测量数据、控制实验进程还是保证产品质量,仪器都发挥着至关重要的作用。为了确保仪器的准确性和稳定性,仪器校准报告这一概念应运而生。本文给大家详细介绍仪器校准报…

科研基础与工具(论文写作)

免责申明: 本文内容只是学习笔记,不代表个人观点,希望各位看官自行甄别 参考文献 科研基础与工具(YouTube) 学术写作句型 Academic Phrase bank 曼彻斯特大学维护的一个网站 写论文的时候,不不知道怎么…

简单使用Web3.js

随着区块链技术的快速发展,以太坊(Ethereum)作为其中的佼佼者,为开发者们提供了一个构建去中心化应用的强大平台。为了更轻松地与以太坊区块链进行交互,我们需要一个强大的工具,而Web3.js正是这样一个工具。…