Linux中的vi与vim:编辑器的王者之争与深度探索

news2024/12/29 9:48:17

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Linux的起源与发展

2、vi与vim的历史与发展 

二、vi编辑器基础 

1、vi编辑器的启动与退出

2、vi的基本模式:普通模式、插入模式、命令模式

3、vi的基本操作:光标移动、文本删除、文本复制与粘贴

三、vim编辑器的特性与优势 

1、vim与vi的区别与联系

2、vim的增强功能:语法高亮、多窗口编辑、撤销与重做 

3、vim的插件与扩展性 

四、高级编辑技巧

1、查找与替换文本

2、文本块操作:列编辑、块复制与粘贴

3、宏录制与执行 

五、配置文件与个性化设置

1、vimrc配置文件的作用与位置

2、常用配置选项解析:缩进、语法高亮、快捷键设置


一、前言

1、Linux的起源与发展


1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2、vi与vim的历史与发展 

Vi(可视化编辑器):

  • Vi 最初由 Bill Joy 在 1976 年开发,是 Unix 系统上的一款文本编辑器。
  • Vi 是一个模式编辑器,它有三种主要模式:命令模式、插入模式和可视模式。在命令模式下,用户可以执行各种编辑命令,如移动光标、复制和粘贴等。在插入模式下,用户可以输入文本。在可视模式下,用户可以选择文本。
  • Vi 是在 Unix 系统上广泛使用的编辑器,它的功能非常强大,但学习曲线也相对较高。

Vim(Vi improved):

  • Vim 是 Vi 的改进版本,由 Bram Moolenaar 在 1991 年发布。
  • Vim 在 Vi 的基础上添加了许多新功能和改进,包括语法高亮、多级撤销、插件支持等。
  • Vim 保留了 Vi 的模式编辑方式,并且在其基础上进行了扩展和改进。
  • Vim 是一个开源软件,可以在多个操作系统上运行,包括 Unix、Linux、Windows 等。
  • Vim 也被广泛用于程序开发、系统管理等领域,因为它强大的编辑功能和可定制性。

总的来说,Vim 是 Vi 的增强版本,保留了 Vi 的核心特性,并在此基础上增加了更多的功能和改进,使得它成为一个功能强大、高度可定制的文本编辑器。

  

二、vi编辑器基础 

1、vi编辑器的启动与退出

在Unix和Linux系统中,使用Vi编辑器启动和退出的方法如下:

启动Vi编辑器:

vi filename


其中,filename是您要编辑的文件的名称。如果文件不存在,则会创建一个新文件。

退出Vi编辑器:

保存并退出:

  • 按下 Esc 键确保您处于命令模式。
  • 输入 :wq 并按下 Enter 键。这将保存更改并退出Vi编辑器。

不保存并退出:

  • 按下 Esc 键确保您处于命令模式。
  • 输入 :q! 并按下 Enter 键。这将退出Vi编辑器,不保存任何更改。

保存但不退出:

  • 按下 Esc 键确保您处于命令模式。
  • 输入 :w 并按下 Enter 键。这将保存更改,但不会退出Vi编辑器。

插入模式下退出:

  • 如果在插入模式下,可以按下 Ctrl + C 组合键来停止编辑并返回到命令模式。
  • 然后,可以按照上述方法之一退出Vi编辑器。

2、vi的基本模式:普通模式、插入模式、命令模式

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

1. 普通模式(Normal Mode):

  • 在普通模式下,可以执行各种编辑命令,如移动光标、复制、粘贴、删除等。
  • 普通模式是Vi的默认模式,在启动Vi时会进入此模式。
  • 可以按下 Esc 键从其他模式返回普通模式。

2. 插入模式(Insert Mode):

  • 在插入模式下,可以输入文本。这是实际编辑文件内容的模式。
  • 可以通过按下 i 键进入插入模式。按下 i 后,光标将移动到当前位置,并且可以开始键入文本。
  • 按下 Esc 键可以从插入模式返回普通模式。

3. 命令模式(Command Mode):

  • 在命令模式下,可以执行各种编辑命令,如保存文件、退出编辑器、查找替换文本等。
  • 可以按下 : 键进入命令模式。在命令提示符后输入命令,并按下 Enter 键执行该命令。
  • 按下 Esc 键可以从命令模式返回普通模式。

这三种模式允许以不同的方式操作和编辑文本。熟练掌握这些模式可以更有效地使用Vi编辑器进行编辑工作。

  

3、vi的基本操作:光标移动、文本删除、文本复制与粘贴

光标移动:

  • 使用箭头键(上、下、左、右)来移动光标。
  • 按下 h 键将光标向左移动一格。
  • 按下 j 键将光标向下移动一行。
  • 按下 k 键将光标向上移动一行。
  • 按下 l 键将光标向右移动一格。

文本删除:

  • 在普通模式下,按下 x 键将删除光标所在位置的字符。
  • 按下 dd 连续两次将删除光标所在行的整行文本。
  • 若要删除多个字符,请将光标移动到要删除的第一个字符位置,然后按下 d 键,接着移动光标到要删除的最后一个字符位置,最后按下 d 键。例如,d2w 将删除光标位置后的两个单词。

文本复制与粘贴:

  • 在普通模式下,按下 y 键将复制光标所在位置的字符。
  • 要复制多个字符,请将光标移动到要复制的第一个字符位置,然后按下 y 键,接着移动光标到要复制的最后一个字符位置,最后按下 y 键。例如,y2w 将复制光标位置后的两个单词。
  • 按下 p 键将在光标后粘贴已复制的文本。
  • 按下 P 键将在光标前粘贴已复制的文本。

三、vim编辑器的特性与优势 

1、vim与vi的区别与联系

Vim(Vi IMproved)是Vi编辑器的改进和增强版本,它在Vi的基础上添加了许多新功能和改进。

以下是Vim与Vi之间的区别和联系:

区别:

  • 功能增强:Vim相比Vi具有更多功能和特性,包括语法高亮、自动补全、分屏编辑、插件支持等。
  • 兼容性:Vim是Vi的超集,它可以完全兼容Vi的操作方式,但同时也提供了更多的功能和改进。
  • 扩展性:Vim支持更多的定制和配置选项,用户可以根据自己的需求对Vim进行定制和扩展。
  • 跨平台性:Vim可以在多种操作系统上运行,包括Unix/Linux、Windows、macOS等,而Vi通常只存在于Unix/Linux系统中。
  • 开发活跃性:Vim的开发活跃度更高,有一个庞大的用户社区和开发团队持续开发和维护。

联系:

  • 基础操作相同:Vim的基本操作和命令与Vi相同,因此熟悉Vi的用户可以轻松地切换到Vim。
  • 文件格式相同:Vim使用和Vi相同的文本文件格式,因此可以互相兼容和编辑。
  • 兼容性:Vim保留了与Vi的兼容性,因此在Vi和Vim之间切换并不会造成操作上的困扰。

总的来说,Vim是Vi的增强版本,具有更多功能和改进,但仍然保留了Vi的基本操作和兼容性。

  

2、vim的增强功能:语法高亮、多窗口编辑、撤销与重做 

1. 语法高亮:打开一个文件后,Vim会自动根据文件类型进行语法高亮。如果需要手动启用或禁用语法高亮,可以使用以下命令:

  • 启用语法高亮::syntax on
  • 禁用语法高亮::syntax off

2. 多窗口编辑:

  • 在水平方向上分割窗口::sp :split
  • 在垂直方向上分割窗口::vsp:vsplit
  • 切换窗口:Ctrl + w,然后按下 h、j、k、l 来选择不同窗口
  • 关闭当前窗口::q:quit

3. 撤销与重做:

  • 撤销上一步操作:u :undo
  • 重做被撤销的操作:Ctrl + r:redo

3、vim的插件与扩展性 

Vim具有强大的插件系统和良好的扩展性,使得用户可以根据自己的需求来扩展编辑器的功能。

Vim插件管理器:Vim的插件管理器使得安装、更新和删除插件变得简单方便。

一些常用的Vim插件管理器包括:

  • Vundle
  • Pathogen
  • Vim-plug
  • NeoBundle

常用的Vim插件:

  • Nerdtree:提供文件系统导航树。
  • CtrlP:快速模糊搜索文件。
  • YouCompleteMe:代码自动补全。
  • Syntastic:语法检查工具。
  • Vim-airline:状态栏美化。
  • Fugitive:Git工具集成。
  • Tagbar:显示代码结构。
  • Vim-surround:方便的括号、引号等配对操作。

自定义配置:用户可以通过修改Vim的配置文件(通常是.vimrc)来定制编辑器的行为和外观。在配置文件中,可以设置键盘映射、颜色方案、缩进设置、插件管理等。


脚本编写:Vim支持使用Vim脚本(Vimscript)来编写自定义功能和插件。Vim脚本是一种类似于Vim内置命令的脚本语言,可以通过脚本来实现各种自定义功能。

四、高级编辑技巧

1、查找与替换文本

在 Vim 中,查找和替换文本是常见的操作,可以通过以下方式实现:

查找文本:

  • 在普通模式下按下 / 进入查找模式,然后输入要查找的文本,按 Enter 键查找下一个匹配项。
  • 若要向上查找,可以使用 ? 进入反向查找模式。
  • 若要查找光标所在位置的单词,可以使用 *(向下)或 #(向上)。

替换文本:

  • 在普通模式下,使用 :%s/old_text/new_text/g 进行全局替换,其中 old_text 是要被替换的文本,new_text 是替换后的文本。
  • 如果只想替换当前行的第一个匹配项,可以使用 :s/old_text/new_text/。
  • 如果要确认每个替换操作,请在命令后面添加 c,如 :%s/old_text/new_text/gc。

替换部分文本:

  • 使用 :s/old_text/new_text/g 时,可以在 old_text 和 new_text 之间加上范围限定符来指定替换的范围,如 :10,20s/old_text/new_text/g 表示在第 10 行到第 20 行之间进行替换。
  • 使用 % 表示全局范围,如 :%s/old_text/new_text/g。

替换确认:

  • 在替换命令的末尾加上 c 选项,如 :%s/old_text/new_text/gc,Vim 会在替换前询问是否确认。

替换与不替换:

  • 在替换命令的末尾加上 i 选项,如 :%s/old_text/new_text/gi,Vim 会忽略大小写进行替换。

2、文本块操作:列编辑、块复制与粘贴

在 Vim 中进行文本块操作(也称为列编辑)可以通过以下方式实现:

列编辑模式:

  • 进入普通模式后,按下 Ctrl + V 进入列编辑模式(也称为可视块模式)。

列编辑操作:

  • 使用上下左右箭头键移动光标,选择要编辑的文本块。
  • 按下 d 删除所选文本块。
  • 按下 c 进入插入模式并替换所选文本块。
  • 按下 y 复制所选文本块。
  • 按下 > 或 < 可以向右或向左移动所选文本块的缩进。
  • 按下 = 自动对齐所选文本块。

块复制与粘贴:

  • 进入列编辑模式后,按下 y 复制所选文本块。
  • 移动到要粘贴的位置,按下 p 将文本块粘贴到光标后面。
  • 若要将文本块粘贴到光标前面,可以使用 P。

3、宏录制与执行 

在 Vim 中,宏录制和执行是一种强大的功能,可以让你自动执行一系列编辑操作。以下是如何录制和执行宏的步骤:

录制宏:

  • 进入普通模式。
  • 按下 q 键,然后选择一个字母作为宏的寄存器(比如 q)。
  • 执行一系列编辑操作,包括光标移动、文本编辑等。
  • 按下 q 键来停止录制。

执行宏:

  • 进入普通模式。
  • 输入 @ 符号,然后紧接着输入你之前选择的宏寄存器的字母(比如 @q)。
  • 按下回车键执行宏。
  • 你也可以使用数字来指定执行宏的次数,比如 3@q 将会执行宏 q 三次。

示例:
假设要在多个行上执行相同的编辑操作,比如在每一行的开头添加注释符 #:

录制宏:

  • 进入普通模式。
  • 按下 q 进入宏录制模式,并选择寄存器 a(qa)。
  • 按下 ^ 移动到行首。
  • 输入 i# 添加注释符。
  • 按下 j 移动到下一行。
  • 按下 q 结束录制。

执行宏:

  • 进入普通模式。
  • 输入 @a 执行宏 a,然后按下回车键。
  • 或者输入 5@a 执行宏 a 五次,然后按下回车键。

这样,就可以通过宏录制和执行来自动化重复性的编辑任务。

五、配置文件与个性化设置

1、vimrc配置文件的作用与位置

vimrc 是 Vim 的配置文件,它可以用于自定义 Vim 的行为和外观。在 vimrc 中,可以设置各种选项、定义键盘映射、启用或禁用插件等。

作用:

  • 配置选项:可以设置 Vim 的各种选项,比如缩进、语法高亮、行号显示等。
  • 定义键盘映射:可以将键盘按键映射到自定义的命令或操作上,方便快捷地执行特定操作。
  • 设置颜色方案:可以选择或定义不同的颜色方案,以改变 Vim 的外观。
  • 启用插件:可以在 vimrc 中启用和配置各种 Vim 插件,扩展 Vim 的功能。

位置:

  • 在 Unix/Linux 系统中,vimrc 文件通常位于用户的 home 目录下,具体位置是 ~/.vimrc。在 Windows 系统中,vimrc 文件可能位于用户的个人文件夹下,具体位置是 C:\Users\用户名\_vimrc。

如果 vimrc 文件不存在,可以自行创建它。在 Unix/Linux 系统中,可以使用以下命令创建 vimrc 文件:

touch ~/.vimrc


然后,就可以使用文本编辑器编辑 vimrc 文件,将想要的配置选项和设置写入其中。

2、常用配置选项解析:缩进、语法高亮、快捷键设置

1. 缩进设置:可以通过以下选项设置缩进:

set tabstop=4    " 每个 Tab 键的宽度为 4 个空格
set shiftwidth=4 " 每次缩进/反缩进时移动的空格数为 4
set expandtab    " 使用空格代替 Tab 键


2. 语法高亮:可以通过以下选项启用语法高亮:

syntax enable  " 启用语法高亮


3. 快捷键设置:可以使用 map 和 noremap 命令设置自定义的快捷键:

" 以下是设置快捷键的示例:
nnoremap <leader>t :tabnew<CR>  " 使用 <leader> + t 快捷键新建一个标签页
nnoremap <C-s> :w<CR>            " 使用 Ctrl + s 快捷键保存当前文件


在上述示例中,<leader> 表示自定义的快捷键前缀,默认是反斜杠 \,也可以使用其他键作为快捷键前缀。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

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

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

相关文章

【C++】手撕list(list的模拟实现)

目录 01.节点 02.迭代器 迭代器运算符重载 03.list类 &#xff08;1&#xff09;构造与析构 &#xff08;2&#xff09;迭代器相关 &#xff08;3&#xff09;容量相关 &#xff08;4&#xff09;访问操作 &#xff08;5&#xff09;插入删除 我们在学习数据结构的时候…

Laravel 6 - 第十一章 中间件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

Unity 如何制作和发布你的 Package

一、制作你的第一个 Package Unity Package 不做过多赘述&#xff0c;像 URP 本质上也是一个 Package&#xff0c;在 Unity 中可以通过菜单栏 → Window → Package manager 来管理你当前的所有 Package 本篇文章主要介绍&#xff1a;如何制作并发布属于你的 Package 1.1 Pac…

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮&#xff0c;新建一个项目 新建空白项目 项目名称与本地新建项目名称相同&#xff0c;其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下&#xff0c;右击 git bash here打开命令窗口 初始化…

8.4.2 实验2:配置Trunk

1、实验目的 通过本实验可以掌握&#xff1a; Native VLAN 的含义和配置。IEEE802.1q 封装Trunk 配置和调试方法。 2、实验拓扑 配置 Trunk 的实验拓扑如下图所示。 图8-6 配置 Trunk 的实验拓扑 3、实验步骤 3.1 在交换机S1、S2上创建 VLAN 并把端口划分到相应的VLAN中 …

ASP.NET教务管理平台-权限及公共模块设计与开发

摘 要 随着教育改革的不断深化&#xff0c;高等院校的建设与发展对国民整体素质的提高起着越来越重要的作用&#xff0c;建立一套能够适应这些改变的行政管理方案也就显得尤为重要。对于教务处来说&#xff0c;将信息技术用于校务管理中便是迫切的要求。 教务系统中的用户…

ROS 2边学边练(33)-- 写一个静态广播(C++)

前言 通过这一篇我们将了解并学习到如何广播静态坐标变换到tf2&#xff08;由tf2来转换这些坐标系&#xff09;。 发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如&#xff0c;在以激光扫描仪中心的坐标系中推理激光扫描测量数据是最简单的。 这…

Ventus(承影):基于RISC V的开源GPGPU

Ventus&#xff08;承影&#xff09;&#xff1a;基于RVV的开源GPGPU 清华大学集成电路学院dsp-lab的承影RVV GPGPU设计文档。 整体目标 提供一个开源的基于RVV的GPGPU实现方案&#xff0c;并给出软件映射方案、指令集&#xff08;支持的指令及特性、添加的自定义指令&#xf…

15.接口自动化学习-Mock(挡板/测试桩)

场景&#xff1a; 新需求还未开发时&#xff0c;使用mock提早介入测试&#xff0c;等后边开发后&#xff0c;进行调试 三方接口返回效率低&#xff0c;使用mock技术走通流程 1.mock方式 &#xff08;1&#xff09;如果会写django或flask,可以写简单对应的代码 &#xff08;…

小米一面:说说MVC与设计模式的关系

前言 大家好&#xff0c;我叫阿杆&#xff0c;不叫阿轩。 先来看看面试环节吧。 面试官&#xff1a;请说说MVC模式是基于哪种设计模式的&#xff1f; 求职者&#xff1a;MVC本身不就是一种设计模式吗&#xff1f; 面试官&#xff1a;我的意思是&#xff0c;MVC是基于23中设计…

【04-提升模型性能:集成学习与超参数优化】

文章目录 前言集成学习BaggingBoosting超参数优化随机搜索贝叶斯优化总结前言 在前几篇博文中,我们已经介绍了一些机器学习的基础知识、Scikit-learn的核心工具与技巧,以及如何评估模型性能。本篇博文将重点讲解两个可以显著提升机器学习模型性能的高级策略:集成学习和超参数…

python企业员工培训考试系统django+vue

这次开发的供电公司安全生产考试系统管理员&#xff0c;教师&#xff0c;学生。管理员功能有个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;主观题信息管理&#xff0c;主观题回答管理&#xff0c;主观题评分管理&#xff0c;成绩信息管理&#xff0c;试卷管理…

命名空间:namespace

对于无名命名空间 &#xff1a;但是不能再次定义相同名称的变量 在同一文件中

Linux程序调试优化(2)—— 一次学会嵌入式Linux下程序崩溃定位

文章目录 1.gdb调试1.1 gcc 编译时不带-g1.2 gcc 编译时带-g 2.coredump栈回溯2.1 使能core文件生成2.1 借助core文件回溯堆栈 3.backtrace捕捉SIGSEGV信号4.其他工具5.总结 写程序时&#xff0c;难免碰到程序崩溃的现象&#xff0c;而如何排查这些内存崩溃问题&#xff0c;例如…

Pulsar Meetup 深圳 2024 会务介绍

“ Hi&#xff0c;各位热爱 Pulsar 的小伙伴们&#xff0c;Pulsar Meetup 深圳 2024 报名倒计时啦&#xff0c;快来报名。这里汇集了腾讯、华为和谙流科技等大量 Pulsar 大咖&#xff0c;干货多多&#xff0c;礼品多多&#xff0c;不容错过啊。 ” 活动介绍 图片 由 AscentStre…

巧用波卡生态优势,Mythical Games 引领 Web3 游戏新航向

Polkadot 对创新、安全和治理的承诺为 Mythical Games 提供了极大的发展价值。这个链上生态不仅将支持 Mythical Games 成长发展&#xff0c;还将帮助其他 Mythos 合作伙伴来壮大建设项目。 —— Mythical Games 创始人兼首席执行官 John Linden 近期 Web3 游戏行业又有新动向&…

【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告 【格式】PDF版本 【关键词】战略规划、MBB、麦肯锡 【核心观点】 - 价值定位是企业希望深…

HORROR SYSTEM

HORROR SYSTEM是一个创新的工具包,允许开发者在Unity3D中创建独特的原创恐怖游戏。 HORROR SYSTEM是一款强大而灵活的工具,旨在基于Unity3D引擎创建沉浸式第三人称恐怖游戏。 这项资产易于使用且直观,可以让任何经验水平的开发人员将他们的想法付诸实践,创造出高质量、充满…

飞行汽车飞行控制系统功能详解

飞行汽车是一种创新的交通工具&#xff0c;结合了汽车和飞机的特点。它可以在陆地上行驶&#xff0c;同时也具备在空中飞行的能力。飞行汽车的概念已经存在多年&#xff0c;并且近年来随着技术的进步和研发的深入&#xff0c;这种交通工具正在逐渐从概念走向现实。 飞行汽车的…

NLP方面知识

NLP方面知识 一 基础1.Tokenizer1.1 分词粒度&#xff1a;1.2 大模型的分词粒度1.3 各路语言模型中的tokenizer 2.Embedding layer2.1 理解Embedding矩阵 一 基础 1.Tokenizer tokenizer总体上做三件事情&#xff1a; 分词。tokenizer将字符串分为一些sub-word token string&…