Linux中的 `vi` 与 `vim` 使用详解

文章目录

  • Linux中的 `vi` 与 `vim` 使用详解
    • 1. `vi` 编辑器
      • 1.1 什么是 `vi`
      • 1.2 `vi` 的基本用法
        • 1.2.1 启动 `vi`
        • 1.2.2 模式
        • 1.2.3 基本操作
        • 1.2.4 常用命令
      • 1.3 `vi` 的特点
    • 2. `vim` 编辑器
      • 2.1 什么是 `vim`
      • 2.2 `vim` 的基本用法
        • 2.2.1 启动 `vim`
        • 2.2.2 模式
        • 2.2.3 `vim` 的增强功能
        • 2.2.4 `vim` 的基本操作
      • 2.3 安装插件
    • 3. `vi` 与 `vim` 的区别
    • 总结



Linux中的 vivim 使用详解

在Linux中,vivim 都是非常流行的文本编辑器,尤其在系统管理、程序开发和配置文件编辑中被广泛使用。vimvi 的增强版本,具有更多功能。下面详细讲解它们各自的特点、使用方式以及二者之间的区别。

1. vi 编辑器

1.1 什么是 vi

vi 是一种经典的文本编辑器,最早在Unix系统中出现,几乎在所有类Unix系统中都有预装。vi 是一个简单、轻量的编辑器,非常适合在命令行环境中进行快速编辑。由于其普及性和无处不在的特性,vi 已成为Linux/Unix用户的基本工具。

1.2 vi 的基本用法

1.2.1 启动 vi

在终端中输入以下命令即可打开一个文件:

vi filename
  • 如果文件 filename 存在,vi 将打开它进行编辑。
  • 如果文件不存在,vi 将创建一个新文件并打开。
1.2.2 模式

vi 编辑器有三种基本模式:

  1. 普通模式(Normal mode):这是 vi 的默认模式,用于浏览和操作文本。启动 vi 后首先进入此模式。在普通模式下可以进行复制、粘贴、删除、移动光标等操作。按 Esc 键可以随时返回普通模式。
  2. 插入模式(Insert mode):用于编辑文本。在普通模式下按 i 进入插入模式。插入模式下可以输入文本,按 Esc 返回普通模式。
  3. 命令模式(Command mode):用于执行保存、退出、查找、替换等命令。在普通模式下按 : 进入命令模式。
1.2.3 基本操作
  • 插入模式:在普通模式下按 i 开始插入文本。
  • 保存文件:在普通模式下按 : 进入命令模式,然后输入 w 保存文件。
  • 退出编辑器:在普通模式下按 : 进入命令模式,然后输入 q 退出。若文件有修改但未保存,可以使用 :q! 强制退出。
  • 保存并退出:wq:x
1.2.4 常用命令
  • 移动光标
    • h 左移,j 下移,k 上移,l 右移。
    • w 向前移动一个单词,b 向后移动一个单词。
  • 删除文本
    • x 删除光标处的字符。
    • dd 删除整行。
  • 复制和粘贴
    • yy 复制当前行。
    • p 在光标后粘贴。
  • 撤销操作u 撤销上一步操作。

1.3 vi 的特点

  • 轻量级,速度快,适合在资源有限的环境中使用。
  • 无需鼠标,只需使用键盘操作,适合在终端和远程SSH环境下使用。
  • 所有Unix和Linux系统中几乎都默认安装。

2. vim 编辑器

2.1 什么是 vim

vim 是 “Vi IMproved” 的缩写,即 vi 编辑器的增强版本。vimvi 的基础上增加了许多功能,如语法高亮、代码折叠、多文件编辑、插件支持等,使其更适合编程和复杂文本处理。vim 也是在大多数Linux发行版中默认预装的编辑器之一。

2.2 vim 的基本用法

2.2.1 启动 vim

vi 类似,在终端中输入以下命令打开文件:

vim filename

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

2.2.2 模式

vimvi 拥有相同的三种基本模式(普通模式、插入模式、命令模式),但 vim 的每种模式都有更多的功能和更好的体验。例如,vim 提供了可视模式,用于高效选择文本块。

2.2.3 vim 的增强功能
  • 语法高亮vim 可以根据文件类型自动进行语法高亮,方便程序开发者编写和调试代码。
  • 多文件编辑:可以在同一窗口中打开多个文件,使用 :e filename 打开文件,使用 :n:prev 在文件间切换。
  • 分屏:使用 :split:vsplit 进行水平或垂直分屏,方便同时查看和编辑多个文件。
  • 代码折叠:支持折叠代码块,以减少视觉干扰,专注于当前的编辑区域。
  • 撤销树:相比 vi 仅支持一步撤销,vim 允许多步撤销,并且可以管理一个撤销树,进行更复杂的撤销和重做操作。
  • 插件系统vim 拥有强大的插件系统,可以安装各种插件来增强功能,比如代码自动补全、文件树、语法检查等。常用的插件管理器包括 vim-plugVundle 等。
2.2.4 vim 的基本操作

vim 继承了 vi 的所有命令,并进行了扩展。例如:

  • 可视模式:按 v 进入可视模式,可以选择文本块,再进行复制、删除等操作。

  • 替换:s/old/new/ 替换当前行第一个匹配的字符串,:%s/old/new/g 替换整个文件中的所有匹配字符串。

  • 搜索:按 / 输入要查找的内容,按 n 查找下一个匹配项,N 查找上一个匹配项。

  • 配置:通过 ~/.vimrc 文件自定义配置,设置缩进、显示行号、语法高亮等。例如:

    set number      " 显示行号
    syntax on       " 启用语法高亮
    set tabstop=4   " 设置tab宽度为4
    

2.3 安装插件

vim 可以通过插件扩展功能,下面介绍简单的插件管理方式:

  • vim-plug:一个流行的插件管理器,易于使用,安装新插件非常方便。安装 vim-plug 后,在 ~/.vimrc 中配置插件列表,然后执行 :PlugInstall 即可安装所有插件。

3. vivim 的区别

功能vivim
语法高亮不支持支持多种编程语言语法高亮
撤销操作只支持单步撤销支持多步撤销
多文件编辑支持,但功能有限完善的多文件编辑功能
插件支持不支持支持,可扩展性强
配置文件少量配置丰富的配置项,.vimrc 文件
可视模式不支持支持选择文本块
分屏功能基本支持支持水平和垂直分屏

总结

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

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

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

相关文章

如何选择合适的量化交易策略,回测与模拟交易的实战演练

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…

解决跨域问题的案列

JSONP&#xff08;JSON with Padding&#xff09; JSONP 是一种通过 <script> 标签的跨域请求方法&#xff0c;它依赖于服务器支持并返回特定格式的响应。 示例&#xff1a; 前端&#xff1a; <script> function jsonpCallback(data) {console.log(Received data:…

websocket初识

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在 WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性…

【Android 14源码分析】Activity启动流程-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

Llama 3.2:利用开放、可定制的模型实现边缘人工智能和视觉革命

在我们发布 Llama 3.1 模型群后的两个月内&#xff0c;包括 405B - 第一个开放的前沿级人工智能模型在内&#xff0c;它们所产生的影响令我们兴奋不已。 虽然这些模型非常强大&#xff0c;但我们也认识到&#xff0c;使用它们进行构建需要大量的计算资源和专业知识。 我们也听到…

Meta首款多模态Llama 3.2开源:支持图像推理,还有可在手机上运行的版本 | LeetTalk Daily...

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 Meta最近推出的Llama Stack的发布标志着一个重要的里程碑。这一新技术的推出不仅为开发者提供了强大的多模态能力&#xff0c;还为企业和初…

编程题 7-15 计算圆周率【PAT】

文章目录 题目输入格式输出格式输入样例输出样例 题解解题思路完整代码 编程练习题目集目录 题目 根据下面关系式&#xff0c;求圆周率的值&#xff0c;直到最后一项的值小于给定阈值。 2 π 1 1 3 2 ! 3 5 3 ! 3 5 7 ​ n ! ​ 3 5 7 ⋯ ( 2 n 1 ) ⋯ {\frac 2…

安卓13设置删除网络和互联网选项 android13隐藏设置删除网络和互联网选项

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改4.1修改方法14.2修改方法25.编译6.彩蛋1.前言 有些客户不想让用户修改默认的网络配置,禁止用户进入里面调整网络相关的配置。 2.问题分析 像这个问题,我们有好几种方法去处理,这种需求一般…

IDEA Dependency Analyzer 分析 maven 项目包的依赖

一、场景分析 javax.validation 是我们 SpringMVC 常用的数据校验框架。但是 javax.validation 是一个规范&#xff08;Java Bean Validation&#xff0c;简称 JSR 380&#xff09;&#xff0c;它并没有具体的实现&#xff0c;它的常用实现&#xff0c;是hibernate-validator。…

java技能

日志实际使用 log.error(“111”,e);和 System.out.println(ExceptionUtils.getStackTrace(error)); 日志查询 tail -f root.log 前端页面命名&#xff1a; mounted(){ document.title‘设备可视页面’ } 查看ips所属mac nbtstat -a 10.87.236.60 获取容器名称 hostName In…

POW 与 POS是什么?

POW 与 POS是什么? POW(Proof of Work)和POS(Proof of Stake)是区块链技术中两种常见的共识机制,它们在区块链网络中扮演着至关重要的角色,用于确保网络的安全性、去中心化和交易的验证。下面将分别详细解释这两种共识机制。 POW(工作量证明) 定义: POW,即工作量…

匿名管道 Linux

管道 首先自己要用用户层缓冲区&#xff0c;还得把用户层缓冲区拷贝到管道里&#xff0c;&#xff08;从键盘里输入数据到用户层缓冲区里面&#xff09;&#xff0c;然后用户层缓冲区通过系统调用&#xff08;write&#xff09;写到管道里&#xff0c;然后再通过read系统调用&…

[leetcode] 70. 爬楼梯

文章目录 题目描述解题方法动态规划java代码复杂度分析 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1…

每一个云手机的ip是独立的吗

每一个云手机的IP地址通常是独立的。以下是关于云手机IP地址的一些详细信息&#xff1a; 1. 云手机的概念 云手机是将手机操作系统&#xff08;如Android&#xff09;虚拟化后托管在云服务器上的一种服务。用户可以通过互联网访问和控制这些云手机&#xff0c;进行应用使用、…

城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例

1 引言 1.1研究背景、目的与意义 1.1.1研究背景 城市轨道交通系统是现代城市的重要交通方式之一&#xff0c;随着城市化进程的加速和人口增长&#xff0c;轨道交通系统的客流量不断增加。因此&#xff0c;轨道交通部门和相关企业需要对客流数据进行实时监测和分析&#xff0…

BERT训练之数据集处理(代码实现)

目录 1读取文件数据 2.生成下一句预测任务的数据 3.预测下一个句子 4.生成遮蔽语言模型任务的数据 5.从词元中得到遮掩的数据 6.将文本转化为预训练数据集 7.封装函数类 8.调用 import os import random import torch import dltools 1读取文件数据 def _read_wiki(data_d…

可视化是工业互联网的核心技术之一,都有哪些应用场景?

一、工业互联网是什么&#xff0c;发展的来胧去脉 工业互联网是指利用互联网技术和物联网技术&#xff0c;将工业生产中的各种设备、机器、传感器等进行互联互通&#xff0c;实现信息的实时采集、传输和分析&#xff0c;从而实现生产过程的智能化、自动化和高效化。 工业互联网…

工业交换机一键重启的好处

在当今高度自动化和智能化的工业环境中&#xff0c;工业交换机作为网络系统中至关重要的一环&#xff0c;其稳定性和可靠性直接影响到整个生产过程的顺利进行。为了更好地维护这些设备的健康运行&#xff0c;一键重启功能应运而生&#xff0c;并呈现出诸多显著的好处。 首先&am…

Mixture-of-Experts (MoE): 条件计算的诞生与崛起【下篇】

将 Mixture-of-Experts 应用于 Transformers 既然我们已经研究了条件计算的早期工作&#xff0c;那么我们就可以看看 MoE 在变换器架构中的一些应用。 如今&#xff0c;基于 MoE 的 LLM 架构&#xff08;如 Mixtral [13] 或 Grok&#xff09;已广受欢迎&#xff0c;但 MoE 在语…

高级主题:接口性能测试与压力测试

在现代软件开发中&#xff0c;确保接口的性能和稳定性是非常重要的。随着用户数量的增加&#xff0c;接口需要能够承受高并发请求&#xff0c;从而保证良好的用户体验。本篇文章将介绍如何使用 Python 工具 Locust 进行接口性能测试和压力测试&#xff0c;分析测试结果&#xf…