思博网络 发表于 2022-5-11 16:43:32

【SPOTO思博网络】【网工入门干货】运维基础—Vim编辑器

提起文本编辑器,你一定会想到编辑器之神 Vim。作为一个快 30 岁的老牌编辑器,直到现在还很受欢迎。

但你知道VI吗?

VI是一个命令行界面下的文本编辑工具,最早在1976年由Bill Joy开发,当时名字叫做ex。VI支持绝大多数操作系统(最早在BSD上发布),并且功能已经十分强大。
1991年Bram Moolenaar基于VI进行改进,发布了Vim,加入了对GUI的支持。

随着Vim更新发展,Vim已经不是普通意义上的文本编辑器,而是被广泛的作为在文本编辑、文本处理、代码开发等用途。

Vim 编辑文件非常高效,可支持多个操作系统,如 Unix/Linux、Windows、macOS,甚至 iOS 和 Android 上都能找到 Vim 的移植版本。


Vim编辑器键盘
Vim强大的编辑能力中很大部分是来自于其普通模式命令。Vim的设计理念是命令的组合。

“5dd”5表示总共5行,删除光标所在后的5行,包含光标行;“d$” $"代表行尾,删除到行尾的内容,包含光标;“2yy”表示复制光标及后2行,包括光标行;“%d” %代表全部或者全局,%d表示删除文本所有的内容,也即是清空文档所有的内容。
Vim是一个主流开源的编辑器,其默认执行vim命令,会显示帮助乌干达贫困的孩子,如图4-4为vim与键盘键位功能对应关系:

file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps1.jpg



file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps2.jpg

Vim编辑器三种模式
Vim编辑器模式常用有三种,分别是:

命令行模式;文本输入模式;末行模式。

Vim是V1的升级版本,它是安装在Linux操作系统中的一个软件,官网为:www.vim.org

在Linux Shell终端下默认执行vim命令,按Enter键后:默认进入命令行模式;在命令行模式按i进入文本输入模式;按ESC进入命令行模式;按:进入末行模式。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps3.jpg

Vim命令行模式实战

Vim虽然非常强大,但是需要记住很多操作命令。如果没有有效的学习方法,操作起来很不方便,只有做到非常熟练才能感受到它带来的快捷。

下图就为Vim编辑器最常用的语法及规则:

file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps4.jpg
file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps5.jpg
file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps6.jpgfile:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml15496/wps7.jpg
Vim 语法
如果你一旦理解了 Vim 命令的语法结构,就可以与 Vim 进行对话了,就如想要学习一门语言,语法规则是绕不开的一步。

而这个语法,就是动词 + 名词。现在使用基本的 Vim 动词和名词来建立词汇表。

01 Vim 名词与动词

Vim 中的名词(移动):移动是在 Vim 中进行上下左右等操作。Vim 中的一些动作如下所示:
h:左j:下k:上l:右w:移动到下个单词的开头}:跳到下一段$:移动到本行末尾

Vim 中的动词(操作符):以 h 操作符为例,Vim 中有 16 种。但只需掌握其中的 3 种,就能满足 80% 的编辑要求。

y    复制文本d    删除文本,并保存到寄存器c    删除文本,保存到寄存器,并开启「插入」模式

现在了解了 Vim 中基本的名词和动词,就可以根据语法规则组合上述名词和动词:

y$:把当前所有的内容,从当前位置拖至行尾;

dw:从当前位置删除到下一个单词的开头;

c}:从当前位置到当前段落末尾进行更改。


当然移动也接受数字作为参数,如果你想上移 3 行,不需要键入 k 三次,直接使用 3k 就行了:

y2h:向左移动 2 个字符;

d2w:删除后面的 2 个单词;

c2j:更改接下来 2 行。


除此以外,Vim 还允许通过键入操作符命令两次来执行行操作。例如:键入「dd」,删除整行;键入「cc」,更改整行内容。

02 Vim 可组合性和语法

在学习了 Vim 语法之后,下面介绍一下 Vim 中的可组合性。可组合性意味着拥有一组可以组合且执行更复杂命令的通用命令。

在 Vim 中可以组合较简单的命令执行复杂的命令。当 Vim 与外部程序集成时,可组合性的真正威力就显露出来了。

假如你有一个非常混乱的文本,如下所示,你想把它变成列表形式:

Id|Name|Cuteness01|Puppy|Very02|Kitten|Ok03|Bunny|Ok

用 Vim 命令不容易做到,但是你可以用 column 终端命令快速完成。将光标放在「Id」上,运行「!}column -t -s "|"」。就可以得到如下表格数据:

IdName    Cuteness01Puppy   Very02KittenOk03Bunny   Ok

上述的操作过程可分解成这样:动词为「!」(过滤操作符),名词为「}」(转到下一段)。过滤器操作符「!」接受另一个参数,一个终端命令「column -t -s "|"」。


假设你不仅希望将文本列表化,还想筛选出带有「Ok」的行。awk 可以轻松地完成这项任务。可以执行如下操作:
!}column -t -s "|" | awk 'NR > 1 && /Ok/ {print $0}'

得到的结果:
02KittenOk03Bunny   Ok

对操作符、动作和终端命令了解得越多,编写复杂动作的能力就会成倍增加。


文章来源:内容综合自网络,因觉优质,特此分享,侵删。
每天通过一位IE,每两位IE,一位在思博
群里有一群一起备考的战友哦回贴可领取实验手册噢**** Hidden Message *****
进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓
群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加老杨微信(spotoa),邀你进群


页: [1]
查看完整版本: 【SPOTO思博网络】【网工入门干货】运维基础—Vim编辑器