上古神器加持【第二期】:从0到1打造全语言支持的万能编辑器

本文介绍了Vim这款流行的文本编辑器,包括其四种基本模式(正常、插入、视觉、命令行),以及基础命令如搜索、撤销、插入和选择操作。同时分享了学习Vim的方法论,强调随用随查和大量实践的重要性。
摘要由CSDN通过智能技术生成

vim

  • 本期内容:
  • Vim的简单概述
  • Vim的基础语法
  • Vim学习方法论

1. Vim概述

Vim官方网站

Vim(Vi IMproved)是一款流行的文本编辑器,是 Unix 和类 Unix 系统下的一种强大工具。


你的鼠标有点像医生在你很小的时候就植入你的身体,告诉你的父母这是在电脑上做某事的最佳设备。你喜欢它是因为你已经深深地习惯了它,而且已经习惯了很长一段时间。

问问自己:如果鼠标如此完美,为什么你最喜欢的 IDE 341324 个键盘快捷键?也许是因为使用键盘速度更快?更轻松?更高效?更舒服吗?

你的鼠标不是你最好的朋友。这只是一个朋友。你的键盘才是你真正的异母兄弟。力量来自于它,而 Vim 非常适合您驾驭和释放这种力量。


2. Vim基础语法

2.1 模式

学习Vim必须了解它的一些基本规则。vim和常规编辑器最大的区别之一是它分为四种基本模式: 正常模式 插入模式 视觉模式 命令行模式

  • Normal Mode 正常模式

正常模式下,我们不能对文件内容进行编辑操作,包括插入、删除、替换等。只能移动光标来浏览内容:

image-20240429175654469

该模式下,我们可以通过下面的按键来移动光标:

按下 h 向左移动一个字符。
按下 j 向下移动一个字符。
按下 k 向上移动一个字符。
按下 l 向右移动一个字符。


Insert Mode 插入模式

在默认的正常模式下,我们可以通过按下i来切换到插入模式,注意是大小写,既然这里提到了大小写问题,那就顺带说了,Vim对大小写非常敏感,比敏感肌还敏感,同一个字符大小写不同可能造成的功能差异天壤之别。

image-20240429180820758

观察上图,当我们按下i时,左下角会有一个-- INSERT --模式提示,光标样式也会发生变化。当然,切换到插入模式的命令很多,不要着急,当下的重点在于理解这几种模式,具体的其他命令后面都会一一讲解。

在插入模式下,我们可以通过Esc来切换到正常模式。


Visual Mode 视觉模式

这个模式主要在选择内容是切换。

image-20240429182144541

正常模式下,通过下面的按键执行切换:

  • V 切换到视觉模式并以行为选择单位;
  • v 切换到视觉模式以字符为选择单位;
  • Ctrl+v 切换视觉模式以块为选择单位;

Command-Line Mode 命令行模式

如果你在 NORMAL 模式下输入 : ,你的光标会自动停在 Vim 的底部。从那里,您可以输入任何您想要的命令。这些命令也称为 Ex 命令。

比如下图中的例子就是使用命令行模式的搜索命令

image-20240429193331309

该模式下的高频命令:

  • :help

打开 Vim 的帮助。可以说是最有用的命令。这个帮助非常完整。例如,如果您不记得如何退出 Vim,可以输入 :help quit

  • :q

退出当前窗口。如果只有一个窗口(这是默认的),你最终将退出 Vim

  • :q!

退出而不保存。有强制效果。

  • :w

保持当前文件

  • :wq

保存并退出当前文件,这是组合命令。拥有同样功能但更加简化的另外一个命令是:x


上面几种模式的切换都是在正常模式下进行。


2.2 通用命令

该部分主要列一些通用的的基础命令,不仅仅是针对这部分内容是这样,其他部分的命令也只会列一部常用的,其他的东西需要自己用到时候或者当下就很好奇,那就可以通过查询文档获得帮助,这也是学习Vim的核心方法,随用随查随记

千万不要可以的去记忆或者尝试背下来这些命令,那会是一件很恐怖的事情。

2.2.1 搜索

简单的搜索,使用/就够用了,在命令行模式下使用。确定搜索内容之后按下回车就可以了。下面是针对搜索结果的操作:

  • n:转到下一个搜索结果
  • N:转到上一个搜索结果

image-20240429210746138

除了这种方式,还有一种基于正常模式下的搜索,在正常模式下使用这两个按键来搜索光标下的单词

*:向前搜索

#:向后搜索

image-20240429210517956

您可以通过输入 n 转到 下一个搜索结果。要转到上一个,请使用 N


2.2.2 撤消&重做

撤销的功能类似于普通编辑器下的Ctrl+z,明白?

u :撤销到上一次编辑操作

Ctrl+r:重做当下的操作

怎么理解呢,比如说我上一步刚刚写了一行代码,下一刻发现没必要,于是我执行了撤销,此时这行代码将会回退到没写之前,欧克,现在我又后知后觉觉得上一步执行的撤销操作没必要了,我可以执行重做命令,恢复这行代码。


2.2.3 常见插入

上面提过的i就不再列了。下面是其他一些常用的插入模式命令:

a:在当前字符后插入内容

A:在当前光标所有内容之后插入内容

比如我有一段内容"are you ok?"此时我光标位于这段句子的任何一个位置,当我按下A之后光标会跳到句末并开启插入模式。

o:在当前行下方新建一行并开启插入模式

O:在当前行上方新建一行并开启插入模式


2.2.4 其他杂项

$:光标移动到行尾

0:光标移动到行首(这种方式包含空格)

^也是光标移动到行首(不包含空格)


2.3 常用组合命令

2.3.1 常用组合

:%d:清空整个文件内容,包括缓冲区(理解为剪切板)

dG:删除当前行及其以下内容

ggVG:全选文件内容

  • gg:将光标移动到文件的第一行。
  • V:进入可视模式,开始选择文本。
  • G:将光标移动到文件的最后一行,这样就会选择整个文本。

dw:删除当前单词

dd:删除当前行

d$:从光标处删除到行尾

dgg:删除从光标到文件开头的所有内容

ggdG:将删除文件中的所有内容

ciw:将删除光标下的当前单词并切换到 INSERT 模式

diw:删除光标下的当前单词

nG:将光标移动到指定行开头,这里的n是概数,可以是任意可达数字,比如跳到第12行开头命令是10G


2.3.2 复制粘贴相关

复制

  • v进入视图模式

  • 方向键选择需要复制的内容

  • 按下y复制选中的内容

  • yy:复制整行

粘贴

  • 将光标移动到需要粘贴的位置
  • 按下y粘贴复制的内容,如果要在当前光标之前粘贴,可以使用P

窗口滚动

  • Ctrl+e:向下滚动窗口
  • Ctrl+u:将光标 向前移动半个屏幕(会优先滚动屏幕)
  • <Ctrl+d>:将光标向自己移动半个屏幕(会优先滚动屏幕)

关于常用命令就到这里告一段落了,这些都是Vim必会而且也是最常用的命令,当然也是最基础的东西,更是冰山一角。

更多高阶的内容将会作为本专栏的最后一篇文章发表,欢迎关注。


3. Vim学习方法论

这里是什么呢,简单说一下怎么学Vim吧,或者说分享一些我自己的学习方法。

  • 前面提到的 随用随查随记 不要可以去被命令,这些单词不需要听写,也不考试,戒骄戒躁慢慢来。

为什么把这个作为第一条方法呢,其实很多人都接触过这个东西,可能在某些时刻也曾经立下山盟海誓,不学好Vim,是不为人,结果一入门即是劝退,骂骂咧咧的走了。目前为止,对我来说可能最难搞的有两件事:

  • 坚持使用Vim并不断学习
  • 学习Rust

当然,还是那句话,坚持下来了才是赢家。

  • 大量练习!大量练习!大量练习!

如果你觉得特意去准备一篇内容来练习这些命令很枯燥,那么我不妨采用我的方法:

  • Linux环境下只使用Vim编辑器
  • 其他环境下,比如windows环境,尽可能使用Vim插件或者有选择的情况下选中Vim模式,旧我自己来说,我所有的编程工具和编辑器都安装了Vim插件(有的话),而且几乎任何时候都是坚持使用Vim模式,写代码,看源码什么的,只要这个工具打开 了,那么就只有Vim
  • 坚持刷题的朋友都知道,一些OJ上也提供了Vim的模式,请毫不犹豫的打开它。
  • 刻意练习

不要觉得我两面三刀,我这里说的可以练习和上面说的含义不同,这里的可以练习是建立在坚持在Vim环境下开发的前提下的。

  • 每当有任何操作需求时,尽可能不要想着去动鼠标,第一时间去看文档或者问AI都可以,优先考虑这种方式使用Vim如何完成。
  • 通过上一步之后,必然会获得一些自己遗忘的或者说没接触过的新操作,新命令,要建立一个随手记的小本本,比如记事本,把刚才学到的新东西记录下来,以备后续统一整理和复习查阅。
  • 板正心态

我知道有一部分人头热学习Vim就是为了想装个B,毕竟这玩意会用的人确实不多,看起来花里胡哨的牛逼克拉斯的,就跳出了为装逼学习的念头。

但我告诉你,这是一种病态的想法,你的初衷决定了你的上限。只有真心热爱并且想学好Vim来提升自己工作开发效率的人,才有希望坚持下来,这毕竟是个长期活,没有什么速成大法,也没有捷径可走。

当然,那些真心想学习的也不要在意别人的眼光和非议,不要觉得在公司或者一些公共场合不敢使用Vim,怕自己不够熟练被嘲笑,那可真不必,毕竟大部分人的看法都是依托答辩!


本文的内容到这里就结束了,感谢阅读,欢迎指正,共同进步!

  • 42
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代号0408

轻轻一点,暖心房

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值