当前位置: 首页 > 科技观察

编辑神器Vim新教程GitHub3400星,轻松搞定复杂命令

时间:2023-03-19 23:30:00 科技观察

智能打开Vim,提高编辑效率。提到文本编辑器,肯定会想到编辑器之神Vim。作为一个快30岁的“老牌”编辑,直到现在他的人气依然很高。Vim编辑文件非常高效,支持多种操作系统,如Unix/Linux、Windows、macOS,甚至在iOS和Android上都可以找到Vim的移植版本。Vim虽然很强大,但是需要记住很多操作命令。如果没有行之有效的学习方法,操作起来会很不方便。只有当你非常熟练的时候,你才能感受到它带来的速度。下图是Vim中一些关于删除、复制、粘贴的命令:其实Vim的操作命令远非如此。如果没有好的学习方法,可能很难使用这个编辑器。那么有没有更好的学习Vim的方法呢?近日,一个智能学Vim的项目在GitHub上开源,上线短短几天就收获了3400颗星。让我们看看它是如何聪明地学习Vim的。项目地址:https://github.com/iggredible/Learn-Vim智能打开Vim本项目提供了学习Vim的具体步骤,共分为19章。通过学习,您将掌握vim的语法、文件移动操作、撤销等诸多操作命令。学习目录如下图所示:Vim的这种“智能”学习体现在哪些方面?它与其他Vim学习教程有何不同?接下来,一一分析。Vim语法在所有章节中,首先介绍Vim语法。一旦你了解了Vim命令的语法结构,你就可以与Vim进行“对话”了。就像学习一门语言一样,语法规则是不可避免的一步。而这个语法就是“动词+名词”。现在使用基本的Vim动词和名词来建立你的词汇量。Vim名词和动词Vim中的名词(move):移动就是在Vim中进行上、下、左、右等操作。Vim中的一些动作如下:h:左j:下k:上l:右w:移动到下一个单词的开头}:跳到下一段$:移动到行尾Vim中的动词(operator):以h运算符为例,Vim中有16种类型。而只需要掌握其中的3个,就可以满足80%的编辑要求。y复制文本d删除文本,保存到寄存器c删除文本,保存到寄存器,开启“插入”模式现在你知道了Vim中的基本名词和动词,你可以结合上面的名词和动词按照语法规则:y$:将所有当前内容从当前位置拖到行尾;dw:删除从当前位置到下一个词的开头;c}:从当前位置改变到当前段落的末尾。当然,移动也接受数字作为参数。如果要上移3行,不用输入3次k,直接用3k即可:y2h:向左移动2个字符;d2w:删除接下来的2个词;c2j:将下一个单词向下更改2行。此外,Vim允许通过输入两次运算符命令来进行行操作。例如:键入“dd”删除整行;键入“cc”以更改整行。Vim的可组合性和语法现在您已经学习了Vim语法,让我们来谈谈Vim中的可组合性。可组合性意味着拥有一组通用的命令,这些命令可以组合起来执行更复杂的命令。在Vim中,可以组合更简单的命令来执行复杂的命令。当Vim与外部程序集成时,可组合性的真正力量就会显现出来。假设你有一个像这样的非常混乱的文本,你想把它变成一个列表:Id|Name|Cuteness01|Puppy|Very02|Kitten|Ok03|Bunny|Ok用Vim命令做起来并不容易,但你可以很快做它与列终端命令。将光标放在“Id”上并运行“!}column-t-s“|””。可以得到下表数据:IdNameCuteness01PuppyVery02KittenOk03BunnyOk上面的操作过程可以分解为如下:动词是“!”(过滤运算符),名词为“}”(转下一段)。过滤器运算符“!”采用另一个参数,终端命令“column-t-s“|””。假设您不仅要对文本进行制表,还要过滤掉带有“确定”的行。awk可以很容易地完成这个任务。您可以执行以下操作:!}column-t-s"|"|awk'NR>1&&/Ok/{print$0}'结果:02KittenOk03BunnyOk你对运算符、动作和终端命令的了解越多,编写复杂动作的能力就会呈指数级增长。更多基于Vim语法的操作符了解Vim语法后,您可以完成更多的文件操作。例如,第5章介绍了对文件的操作。对文件最基本的操作就是对字符的操作,字符操作的移动单位是左、下、上、右。hleftjdownkuplrightnext转到更大的移动单元,单词:w移动到下一个单词的开头e移动到下一个单词的结尾b移动到前一个单词的开头ge移动到上一个介绍完字尾的操作,我们再介绍一下行的操作:0移动到当前行的第一个字符;^移动到当前行中的第一个非空字符;g_移动到当前行的最后一个非空白字符;$移动到当前行的最后一个字符;n|移动到当前行的第n列。此外,还有对句子和段落、匹配、行号、窗口等操作,这里不再赘述。本教程还在持续更新中。通过教程的学习,希望能更好的掌握Vim命令,更快的编辑代码。