Linux中vi和vim的区别详解

news2024/12/13 2:11:09

文章目录

  • Linux中vi和vim的区别详解
    • 一、引言
    • 二、vi和vim的起源与发展
    • 三、功能和特性
      • 1、语法高亮
      • 2、显示行号
      • 3、编辑模式
      • 4、可视化界面
      • 5、功能扩展
      • 6、插件支持
    • 四、使用示例
      • 1、启动编辑器
      • 2、基本操作
    • 五、总结

Linux中vi和vim的区别详解

在这里插入图片描述

一、引言

在Linux系统中,vi和vim是两款非常流行的文本编辑器。vi是最早期的版本,而vim是vi的增强版,全称是“Vi IMproved”。本文将详细介绍vi和vim的区别,帮助用户根据自己的需求选择合适的编辑器。

二、vi和vim的起源与发展

vi最初由Bill Joy在1976年开发,是Unix系统上的一款文本编辑器。它是一个模式编辑器,具有命令模式、插入模式和可视模式三种主要模式。而vim由Bram Moolenaar在1991年发布,是vi的改进版本,添加了许多新功能和改进,如语法高亮、多级撤销、插件支持等。

三、功能和特性

1、语法高亮

  • vi:在默认设置下,vi不支持语法高亮,但可以通过插件和配置实现。
  • vim:vim支持丰富的语法高亮功能,并且默认情况下就启用了语法高亮。

2、显示行号

  • vi:默认情况下,vi不会显示行号,但可以通过设置显示行号。
  • vim:默认情况下,vim显示行号,如果需要隐藏行号,也可以在配置文件中进行设置。

3、编辑模式

vi和vim都具有命令模式、插入模式和底线模式,但vim还添加了可视模式和选择模式,可以进行更精细的文本选择和编辑。

4、可视化界面

  • vi:vi只能在终端中使用,没有图形化界面。
  • vim:vim不仅可以在终端中使用,还有一个图形化界面(gVim),在Windows下也可以使用。

5、功能扩展

vim是vi的改进版本,提供了更多的功能和命令,例如多级撤销、窗口分割、复制到剪贴板等,而vi功能相对简单,只实现了基本的文本编辑功能。

6、插件支持

  • vi:vi的插件系统相对简单,需要手动配置。
  • vim:vim有一个强大的插件系统(Vim Script),可以通过插件来扩展编辑器的功能,例如代码补全、文件浏览等。

四、使用示例

1、启动编辑器

启动vi编辑器的命令是:

vi filename

如果文件存在,vi将打开文件进行编辑;如果文件不存在,vi将创建新文件。

2、基本操作

在vi中,基本操作包括移动光标、删除文本、复制和粘贴等。例如:

  • 移动光标:h(左移),j(下移),k(上移),l(右移)。
  • 删除文本:x(删除光标处的字符),dd(删除整行)。
  • 复制和粘贴:yy(复制当前行),p(在光标后粘贴)。

五、总结

vi是一个简单、轻量的文本编辑器,在所有Unix和Linux系统中几乎都有预装。适合基本的文本编辑和在资源有限的环境中使用。vim是vi的增强版,具有丰富的功能,如语法高亮、插件支持、多文件编辑、分屏等,适合程序开发和复杂文本处理。对于Linux用户,尤其是程序员来说,vim是一个功能强大的工具。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • linux 下vi与vim区别以及vim的使用 - 百川汇海 - 博客园
  • Linux中的vi与vim:编辑器的王者之争与深度探索_vim和vi-CSDN博客

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

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

相关文章

阿里云服务器Linux(centos)系统安装nginx1.20.2

阿里云服务器Linux(centos)系统安装nginx1.20.2 1.安装依赖包 一共要安装4种依赖(基于c语言) yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载nginx安装包并解压安装包 nginx官网下载:http://nginx.org/en/do…

数据结构6.3--交换排序

目录 交换排序基本思想 1.冒泡排序 2.快速排序 2.1hoare版本 2.2挖坑法 2.3前后指针版本 交换排序基本思想 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾…

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全,比如Log4j,fastjson。今天讲一下框架安全,就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提…

备忘录模式的理解和实践

引言 在软件开发中,我们经常会遇到需要保存对象状态并在某个时间点恢复到该状态的需求。这种需求类似于我们平时说的“后悔药”,即允许用户撤销之前的操作,恢复到某个之前的状态。备忘录模式(Memento Pattern)正是为了…

STL——string剖析

STL——string剖析 文章目录 STL——string剖析1. C语言中的字符串2. 标准库中string的使用2.1 构造函数2.2 string的容量操作resize和reserve 2.3 string的增删查改插入操作push_back:insert: 删除操作pop_back:erase 查找操作findfind_firs…

Ubuntu24.04配置STMTrack

项目地址:https://github.com/fzh0917/STMTrack 一、安装 CUDA 参考链接: Ubuntu24.04配置DINO-Tracker Ubuntu多CUDA版本安装及切换 由于之前在其他项目中已经安装了 CUDA12.1,这次需要安装另一个版本。 1. 查看安装版本 按照 requireme…

Android显示系统(08)- OpenGL ES - 图片拉伸

Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角形 Android显示系统(05)- OpenGL…

【实现多网卡电脑的网络连接共享】

电脑A配备有两张网卡,分别命名为eth0和eth1(对于拥有超过两张网卡的情况,解决方案相似)。其中,eth0网卡能够连接到Internet,而eth1网卡则通过网线直接与另一台电脑B相连(在实际应用中&#xff0…

聊聊在应用层面实现内网穿透功能是否可行

前言 最近接手了供方开发的网关项目,交接文档里面有个内网穿透的功能,一下子就吸引的我的目光。实现这个内网穿透的背景是业务部门有些业务是部署在公网,这些公网的业务想访问内网的业务,但因为公网和内网没打通,导致…

头歌 计算机操作系统 Linux之线程同步二

第1关:信号量 任务描述 在上一个实训中,我们学习了使用互斥锁来实现线程的同步,Linux系统中还提供了另一个类似互斥锁的线程不同操作,那就是信号量。 本关任务:学会使用信号量来实现线程间的同步与互斥。 相关知识 …

基于MinIO打造高可靠分布式“本地”文件系统

MinIO是一款高性能的对象存储服务,而S3协议是由亚马逊Web服务(AWS)制定的一种标准协议,用于云存储服务之间的数据交换。MinIO与S3协议的关系在于,MinIO实现了S3协议的接口,这意味着用户可以使用与AWS S3相同…

【MIT-OS6.S081作业1.3】Lab1-utilities primes

本文记录MIT-OS6.S081 Lab1 utilities 的primes函数的实现过程 文章目录 1. 作业要求primes (moderate)/(hard) 2. 实现过程2.1 代码实现 1. 作业要求 primes (moderate)/(hard) Write a concurrent version of prime sieve using pipes. This idea is due to Doug McIlroy, in…

Js如和返回数组中的指定列

一、需求 日常工作中需要返回数组中的指定列,例如Echarts 和 下拉框 选择 id,value 类似这种都需要在数组中提取指定列元素。 二、代码示例 const products [{ name: "商品1", price: 100, inventory: 50 },{ name: "商品2", pri…

C++的一些经典算法

以下是C的一些经典算法: 一、排序算法 冒泡排序(Bubble Sort) 原理: 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换…

35.1 thanos项目介绍和二进制部署

本节重点介绍 : 核心优点 无需维护存储,存储高可用: 利用廉价的公有云对象存储,高可用长时间存储,数据降采样:利用Compactor降采样完全适配原生prometheus查询接口:Query实现多级数据缓存配置 二进制部署 …

【PlantUML系列】状态图(六)

一、状态图的组成部分 状态:对象在其生命周期内可能处于的条件或情形,使用 state "State Name" as Statename 表示。初始状态:表示对象生命周期的开始,使用 [*] 表示。最终状态:表示对象生命周期的结束&…

Android 15(V)新功能适配,雕琢移动细节之美

Android 15,内部代号为Vanilla Ice Cream,是Android移动操作系统的最新主要版本,于2024年2月16日在开发者预览版1中发布。Android 15源代码于 2024年9月4日发布。Android 15稳定版于2024年10月15日发布。 以下是针对 Android 15(…

【零成本抽象】基本概念与在C++中的实现

零成本抽象概念是由 Bjarne Stroustrup 提出的,他在 1994 年的著作中就有相关设想,2016 年其在 C++ 大会登台演讲时,明确阐述了 C++ 中的 “零成本抽象” 这一理念。 一、零成本抽象概念 Bjarne Stroustrup提出的零成本抽象概念,是指在编程中使用高级抽象机制时,不会产生…

android编译assets集成某文件太大更新导致git仓库变大

不知道大家有没有类似的困扰,你的工程assets文件过大,我曾经在某度车机地图团队工作过一段时间时候,每次发包会集成一个上百MB的文件。工作一段时间你的git仓库将会增加特别多。最后,你会发现你如果重新git clone这个仓库会非常大…

F5-TTS文本语音合成模型的使用和接口封装

F5-TTS文本语音生成模型 1. F5-TTS的简介 2024年10月8日,上海交通大学团队发布,F5-TTS (A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching) 是一款基于扩散Transformer和ConvNeXt V2的文本转语音 (TTS) 模型。F5-TTS旨在生成流…