vi和vim编辑器介绍与使用

news/2024/10/24 4:48:29/

VI 和 VIM 编辑器是 Unix 和 Linux 操作系统中最常用的文本编辑工具之一。虽然它们都用于编辑文本文件,但它们有一些不同之处。本文将对 VI 和 VIM 编辑器进行介绍,帮助你更好地了解编辑器的特性和优点。

Linux下常见的文本编辑器有:

  • emacs
  • pico
  • nano
  • joe
  • jed
  • vi

诸如此类,但我们只需要掌握vi/vim即可

VI 编辑器

VI(Vi IMproved)是一款最初于 1976 年由 Bill Joy 发布,后由 Bram Moolenaar 于 1991 年推出的文本编辑器。VI 是一种全屏幕、基于纯文本的编辑器,可以在广泛的 Unix 系统上运行。在 UNIX 上,VI 是默认的文本编辑器。

尽管它已经存在了数十年,VI 编辑器仍然是很多程序员和系统管理员喜欢使用的文本编辑器之一。VI 编辑器的主要优点是它占用资源很少,因为它只需要很少的处理器能力和内存。这使得 VI 可以在较老的计算机上运行,并且在系统资源受限的情况下也很有用。

VIM 编辑器

VIM(Vi IMproved)是基于 VI 编辑器的改进版,是由 Bram Moolenaar 开发的一款功能丰富的文本编辑器。VIM 在 VI 的基础上增加了许多新功能和改进。与 VI 编辑器相比,VIM 编辑器具有更高的可定制性和更多的功能。

VIM 编辑器在编辑大文本文件时非常有用。它支持自动缩进、块高亮和语法高亮等功能。VIM 还包括一些额外的命令,例如查找和替换、区块操作和自动完成等。

作为一款常用的文本编辑器,VIM 的优点不止于此。VIM 支持多种操作模式,例如命令模式、插入模式和可视模式。VIM 也支持用户自定义脚本和插件,可以根据个人需要对其进行配置。

VI 和 VIM 编辑器之间的区别

VI 和 VIM 编辑器之间的主要区别在于它们的功能和可定制性。VI 是一个轻量级的基础编辑器,而 VIM 则提供了更多的功能和自定义选项。

VI 编辑器几乎可以在任何 Unix 系统上运行,因此它是一种通用的文本编辑器。另一方面,VIM 编辑器的兼容性和可定制性更高,并且可以通过安装插件和脚本来增强其功能。

总之,VI 和 VIM 编辑器都是非常有用的文本编辑器,尤其是在 Unix 和 Linux 操作系统中使用较为广泛。VI 编辑器占用资源少,适用于较老的计算机和系统资源受限的环境中;而 VIM 编辑器则更加灵活和强大,可以通过自定义选项和插件来满足个人的需求。

vi/vim的特点

  • vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等。
  • vi/vim只是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
  • 全屏幕显示

vi/vim三种编辑模式

vi/vim编辑器有三种编辑模式,分别是:

命令模式

输入模式

末行模式

编辑模式作用
命令模式用户执行命令,比如复制行、粘贴行等
输入模式用于输入文本、修改文本等
末行模式用于查找文本、保存修改等

vi/vim三种编辑模式之间的转换的方式

在这里插入图片描述

  • 命令模式—>输入模式

    • i: insert,在当前光标所在字符的前面,转为输入模式
    • I:大写的i,在当前光标所在行的行首转换为输入模式
    • a: append,在当前光标所在字符的后面转换为输入模式
    • A:在当前光标所在行的行尾转换为输入模式
    • o: open,在当前光标所在行的下方新建一行并转为输入模式
    • O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
  • 输入模式—>命令模式

    ESC

  • 命令模式—>末行模式

    Shift+:

  • 末行模式—>命令模式

ESC

文本编辑模式

打开文件方式文件打开后默认处于命令模式下

vim filename        //打开文件
vim +n filename     //打开文件并定位到第n行
vim +/pattern filename      //打开文件并定位到第一次被/pattern匹配到的内容行首

关闭文件方式:末行模式关闭文件

命令意义
q退出
q!不保存退出
w保存但不退出
w!强行保存
wq保存并退出
wq!强行保存并退出
x强行保存并退出

命令模式关闭文件

ZZ		//保存退出

命令模式下移动光标的方式

	h:向左移动一个字符l:向右移动一个字符j:向下移动一个字符k:向上移动一个字符#h:向左移动#个字符#l:向右移动#个字符#j:向下移动#个字符#k:向上移动#个字符以单词为单位移动w:移动到下一个单词的词首e:跳至当前或下一个单词的词尾b:跳至当前或上一个单词的词首#w:以当前光标为起点跳至第#个单词的词首#e:以当前光标为起点跳至第#个单词的词尾#b:以当前光标为起点跳至第#个单词的词首行内跳转0:数字0,跳转到绝对行首^:跳转到行首的第一个非空白字符$:跳转到绝对行尾行间跳转gg:跳转到第一行G:跳转到最后一行#gg:跳转到第#行#G:跳转到第#行翻屏ctrl+f:向下翻一屏ctrl+b:向上翻一屏ctrl+d:向下翻半屏ctrl+u:向上翻半屏

命令模式下字符编辑:

编辑命令意义
x删除光标所在处的单个字符
#x删除光标所在处及其向后共#个字符
xp交换光标所在处的字符及其后面字符的位置

命令模式下删除字符:d

命令模式下d命令与其它命令组合使用:

  d$:表示删除当前光标所在位置到行尾的内容d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容d0:表示删除当前光标所在位置到绝对行首的内容dd:删除当前光标所在行整行#dd:删除包括当前光标所在行在内的#行D:删除当前光标所在行的内容,保留空行dG:从光标所在行删除到文件尾

末行模式下d命令的使用:

语法:“:StartADD,EndADDd”
这里的StartADD与EndADD是指一个范围,例如:
:1,5d	//表示删除第1到第5行

末行模式下范围表示方法:

表示方法
.光标所在当前行
$最后一行
+#光标所在行往后#行
$-#倒数第#行
%全文

命令模式下复制命令:yy

命令模式下粘贴命令:p

p:小写p若删除或复制的为整行内容,则粘贴至光标所在行的下方若删除或复制的为非整行,则粘贴至光标所在字符的后面
P:大写p若删除或复制的为整行内容,则粘贴至光标所在行的上方若删除或复制的为非整行,则粘贴至光标所在字符的前面

命令模式下替换:r

R:替换模式,替换多个字符
r#:将当前光标的字符替换为#,这里的#可以是任何字符

命令模式下撤销编辑:u

u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
#u:直接撤销此前的#次编辑操作
ctrl+r:还原最近一次的撤销操作
.():重复前一次编辑操作

可视化模式:

可视化模式下可以对选取的内容进行前面讲的所有编辑操作

v:按字符选取内容
V:按矩形块()选取内容

末行模式下文本查找:

/pattern:从上往下查找匹配的内容
?pattern:从下往上查找匹配的内容
n:从上往下查找匹配到的内容的下一条
N:从下往上查找匹配到的内容的下一条

末行模式下查找并替换:s

s命令只能在末行模式下使用

语法:ADDR1,ADDR2 s/pattern/string/gi1,5 s/user/name/g		//表示把第一行到第五行的所有user替换为name

末行模式下显示或取消显示行号:

set nu:显示行号
set nonu:取消显示行号

http://www.ppmy.cn/news/69221.html

相关文章

Liunx基础命令 - rm删除命令

rm命令 – 删除文件或目录 rm命令来自英文单词“remove”的缩写,中文译为“消除”,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。 rm也是一个很危险的命令,使用的时候要特别…

咚咚咚,穷人版生产力工具,好用到飞起

每个程序员都有自己的生产力工具,不管你是深耕职场多年的老鸟,还是在学校努力学习的小鸟,应该都有自己囊里私藏的好辅助。比如帮你完成从头脑风暴草图到创建线框图/原型的UI工具,让代码规范和交付更为可靠的版本控制工具等等。 今…

linux 下 ps、sort、top 命令详解

1、 ps命令 作用:查看系统进程,比如正在运行的进程有哪些,什么时候开始运行的,哪个用户运行的,占用了多少资源。 参数: -e 显示所有进程 -f 显示所有字段(UID,PPIP,C…

低代码应用开发:告别繁琐,实现高效创新

随着企业数字化转型的不断推进,对于软件开发速度、效率和成本的要求也在不断提高。与此同时,随着技术发展,低代码技术逐渐成为了企业快速实现数字化转型的利器。如今,低代码已经广泛应用于各行各业,帮助企业提高应用开…

代码随想录Day16| 104、111、222

104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 class Solution {public int maxDepth(TreeNode root) {if(root null){return 0;}int leftDepth max…

Golang每日一练(leetDay0068) 二叉树右视图、岛屿数量

目录 199. 二叉树的右视图 Binarytree Right Side View 🌟🌟 200. 岛屿数量 Number-of-islands 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日…

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件 AssetDatabase 类提供的 LoadAssetAtPath 方法和 CreateAsset 方法只能读写Assets、Packages文件夹中的资产,如果想要读写其他文件夹(ProjectSettings、UserSettings、Library等&am…

logstash 的基础语法与使用

一、logstash安装与配置 1. 下载 下载地址:Past Releases of Elastic Stack Software | Elastic 注:使用Logstatsh的版本号与elasticsearch版本号需要保持一致 2. 上传并解压 先上传到服务器 /home/software/ 下,然后解压,并…