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,一经查实,立即删除!

相关文章

了解IOS 中时间格式化 “en_US_POSIX” 的含义

最近在解决一个时间显示上的 bug,在 iOS 上显示时间时,如果用户默认选择的是 24 小时制,当然不会出现问题,但是选择的是 12 小时制,那么就会出现问题: 24 小时制 09:01:00 12 小时制 上午09:01:00 我们可以…

【Java 多线程】Volatile 详解

Volatile 为了平衡 CPU、内存和 IO 设备之间的读写速度,充分利用 CPU 的高性能,我们的计算机体系结构、操作系统以及编译程序都做了很多的优化: CPU 增加了高速缓存来平衡 CPU 和内存之间的速度差异,这也就导致可见性问题操作系…

无人机类型有哪些?

无人机可以按照多种方式进行分类,每种分类都有其特定的无人机类型。以下是一些常见的分类方式及其对应的无人机类型: 1. 按飞行平台构型分类: * 固定翼无人机 * 旋翼无人机 * 无人飞艇 * 伞翼无人机 * 扑翼无人机 2. 按用途分类&#xff1a…

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

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

websocket服务器

绑定client端的ip和port&#xff0c;监听client的消息&#xff0c;如果对方发送一个json格式的字符串&#xff0c;就给对方回复一个json格式的“type-join”的字符串&#xff0c;实现交互 #include <stdio.h> #include <stdlib.h> #include <string.h> #inc…

【Linux】学习记录_14_线程

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

11408知识点集合

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

在 C 中打印字符串 - 如何在 C 中打印字符串

打印字符串是编程中的一项基本操作。它帮助您输出信息&#xff0c;检查和调试您的代码&#xff0c;并向用户显示提示信息。 在本文中&#xff0c;您将学习在 C 中打印字符串的一些不同技术。 &#xff08;本文视频讲解&#xff1a;java567.com&#xff09; 在 C 中字符串是什…

第G8周:ACGAN任务

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

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

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

【C++例8-2】 将单目运算符“++”重载为成员函数

课本里的例题&#xff0c;记录一下知识点 1.前置运算符返回值是Clock类引用&#xff0c;后置返回的是Clock类 前置是直接自增&#xff0c;然后参与运算&#xff0c;后置是先参与运算&#xff0c;再自增 ①所以前置可以直接改变&#xff0c;并返回引用&#xff0c;返回引用也…

Spark Standalone模式部署

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

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

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

4.0-Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

Python 序列&#xff08;Sequence&#xff09;是指按特定顺序依次排列的一组数据&#xff0c;它们可以占用一块连续的内存&#xff0c;也可以分散到多块内存中。Python 中的序列类型包括列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09;、字典&#xff08…

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

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

C++中整型乘以0.01快还是除以100快?

相关代码及说明请见下文&#xff1a; int64_t mulFunc(int64_t a) {return (int64_t)(a * 0.01); }int64_t divFunc(int64_t a) {// 注意&#xff0c;除数必须是整型, 例如你不能把100改为100.0。如果你改了&#xff0c;计算速度将大幅下降(因为这样一来将计算过程变为浮点运算…

如何正确设计 TCP/IP 流式应用层网络协议

在我多年打黑工的职业生涯之中&#xff0c;除了在盛大游戏出身的半个老师&#xff08;做游戏服务器的&#xff09;曾今深入的教过我&#xff0c;关于正确的 TCP/IP 流式应用层网络协议的设计理念&#xff0c;前往其它公司打黑工、包括一些的开源项目&#xff0c;见识到的 TCP/I…

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

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

mybatis快速入门-注解版

mybatis 使用注解&#xff0c;简化 xml 配置&#xff0c;汲及到动态 sql 或是多表查询&#xff0c;还是使用 xml 映射文件配置编写。(企业工作中&#xff0c;几乎全是 xml 配置&#xff0c;xml 的 sql 使用注解方式少,而类引用注解方式)。 注解 Select()&#xff1a;查询Inse…

Spring事务失效可能是哪些原因

典型回答 Spring中比较容易失效的就是通过Transactional 定义的声明式事务&#xff0c;他在以下几个场景中会导致事务失效&#xff0c;首先&#xff0c;就是Spring的Transactional是基于Spring的AOP机制实现的&#xff0c;而AOP机制又是基于动态代理实现的。那么如果代理失效了…