世界上有无数的文档解释了为什么一个编辑器比另一个编辑器更好,而只有好人才使用特定的编辑器。
每个文档都显示了作者认为自己选择的编辑最擅长的最佳部分,并让您了解到它只是在等待您发现它。
如果您正在寻找这样的文件,那么令您失望的是。
我为我选择了最佳的文本编辑器,它仅对我有用,我不知道什么对您有用。
我选择(Neo)VIM作为我的主要编辑器,因为使用它越多,我不仅对文本编辑了解得更多,而且在做事上有无数的知识。
但是NeoVIM并不是我使用的唯一文本编辑器。 当我在给定的时间内完成的任务对我来说更好时,我会使用几种类型的文本编辑器。
- 使微学习成为我们日常运营(和企业培训)的一部分
- 如果您是一名教育工作者,那么您应该真正挑战自己,重新考虑您要求学生学习的顺序。
- 如何在专注于项目的同时成为Scrum Master的成熟者
- 管理课堂以实现公平和社会公正
- 第六周:专注于错误的事情
在这篇博客文章中,我将尝试一种新的方式来解释什么是VIM.Iit的目的是了解它的做事方式,而不是学习如何使用VIM做事。
我将重点放在VI而不是VIM上,是的,两者之间有很大的不同,但是逻辑保持不变。
您会发现,VI世界有一个神话,那就是与其他文本编辑方式相比,它具有很大的学习曲线,但我不同意。
VI提供了另一种看待任务的方式,但是它并不常见,因此需要重新学习改变我们做事的方式,这就是需要做出的转变。
我们习惯做事的主要方式如下:


我们有一个专注于编写文本的文本编辑器。 这就是编写文本的主要任务。
当我按一个键时,如果它是一个打印/控制字符,它将被放置在文本区域。
但是,这是给您的一个问题-文本编辑器的主要目标是什么?
这不仅仅与文字写作有关,还与文字阅读,编辑,操作甚至搜索有关。
我们所有人都想完成一项任务,但是同时使用鼠标和键盘,或者只是浏览数以千计的菜单项和对话框窗口,发生了多少次?
假设我在一行中包含以下段落:
劳动者应立即就读,秘密服从的应征者,劳动者和劳动者均应这样做。 尽量不要抽烟,不要因抽烟而锻炼,否则会导致严重后果。 Duis aute irure dolor in reprehenderit in volttable velit esse cillum dolore eu fugiat nulla pariatur。 不擅长于圣人的情节,应在负责任的犯罪活动中动手。
我的光标位于段落的开头,所以我位于“ L”字母的前面,对吗?
现在我想选择该段落中的第二个句子,我该怎么做?
好吧,我将使用箭头键或鼠标,并将尝试站立在“ U”字母之前。
这是一个巧妙的技巧,使用CTRL和向右箭头,您将直接转到每个单词的末尾,而不是转到下一个字符。
在VI中,我们会做不同的事情。
我将按“ t”,然后按“ U”,以在该字符之前到达。
要选择句子的结尾,我将按“ v”开始选择,然后按“ t”,然后按“。”。
而已。
我们习惯于使用“正常方式”来执行有关文本编辑的任务。 这种“正常”的方式是定义类似于“ API”的可执行任务的命令。
选择权的移动与租船权的移动不同。
两种运动是两种不同的方法,它们在逻辑上几乎相同。
编辑器的代码本身可能将运动API与加法手段一起使用,但是由于并非我们正在执行的所有动作都需要选择字符,因此向这种方法添加选择功能并不明智。
但是有另一种思维方式 。
VI为我们提供了动作,动作和模式。
就基本了解而言,这相当于VI为我们提供的80%。
这个怎么运作
VI在理解其工作方式方面非常简单,但它使您感到很难学习其所有功能,因为所有内容都会转换为快捷方式并在适当的时间使用它们。
VI在模式下工作 。 有Normal , Insert , Replace , Visual和其他几种模式。
默认模式是 Normal 。
我们对VI进行的大多数编辑都基于以下规则:
[number]
目前,您了解如何使用VI的30%,并且一切顺利。 另外50%的人了解VI的其他可能性,剩下的20%是有助于使用VI的其他功能。
好的,假设我们要删除VI上的2个单词:
2dw
- 2-进行两次->数字。
- d-删除->操作。
- w —包含下一个字符(例如空格)的单词的运动边界。
我们想在VI中切两个单词:
2cw
- 2-进行两次。
- c-剪切。
- w-包含下一个字符的单词的运动边界。
让我们在VI中复制两个词:
2yw
你看到图案了吗?
如果只是一个单词,它将是这样的:
w
因为一个是最孤独的数字或某物,所以您根本不必键入它。
VI上许多事物都有运动边界,因此动作基于该边界的运动。
这是您可以找到的边界的简短列表:
- w-跳到单词开头(标点符号视为单词)
- W-标点符号后跳到单词开头(标点符号视为单词)
- e-跳到单词结尾(标点符号视为单词)
- E-跳到字尾(无标点)
- b-按单词向后跳(标点符号视为单词)
- B-向后跳(不带标点符号)
- ge —向后跳到字尾(无标点)
- gE —向后跳到单词结尾(标点符号视为单词)
- h —向左走
- j —下去
- k-上升
- l —往右走
句子,段落和更多内容,文档等等还有运动边界。
您现在可能会问“为什么”有这么多类型的运动边界。
好吧,这是“语言”的关键。
VI提供了一种语言,而不是API 。
VI提供了一种语言,可以在其中编写插件,或者只是简化操作。
另一个示例是,可以在一个段落上转到第二个独立的“ I ”,然后将其轻松更改为“ we ”。
没有API,只有模式,动作和动作可以帮助我做到并快速完成。
我也可以将其添加到宏中,因此无论我位于何处,规则都会在每次需要它们时执行。
如果我只想重复我的上一个动作,我将使用点(“。”)键。
如果我希望重复多次,我将如何做?
2。
它是数字“ 2”,然后是一个点(“。”)。
当前的“战争”不是什么更好,如何完成相同任务,以及对于该任务而言更直观的事情。
例如,开始使用简单的“常规”文本编辑器非常简单,而开始使用VI并不是那么简单,除非您知道“有效”的含义。
但是,如果需要了解其他内容,然后只写文本或选择文本,则无论编辑器的类型如何,都有学习的余地。
假设您现在了解VI的基础知识(而不是谈论VIM,NewVIM等),那么在我看来,它更加直观。
我不需要知道“ 10h”代表什么,而是要知道我告诉它做10次。
在这种情况下,我告诉它向左移动10次。
但是这种语言的实际外观可以帮助很多人知道某些事情会发生10次。 现在我需要了解它是什么。
但是,如何告诉“正常”编辑者左走10次呢?
还是删除10个字符?
还是转到第10个“单词”的末尾?
“普通”编辑器的使用不是上下文的一部分。 这是任务的一部分。 因此,我们需要记住,按左箭头键10次将使我们向左移动10步。
通过按十次删除(或退格键),“常规”编辑器将删除10个字符,或者您首先选择10个字符并将其删除一次。
如果我在按住CTRL键的情况下在向右箭头上按10次,或者仅计算要查找的单词数直到找到第10个单词的末尾,就会发生第10个单词的末尾。
VIM以及NeoVIM的功能远不止是动作和“简单”的文本编辑功能。
例如(一个很短的清单):
- 强大的撤消重做,包括更改树
- 持久撤消
- 插件管理器支持
- 内联终端仿真器
- 拼写检查器
- 差速器
- 标签页和分屏
- 远程文字编辑
和更多…
VI,VIM,NeoVIM等提供了一个完整的工作环境,我可以专注于一项任务,而不仅仅是“写文本”。
它允许我控制100%的环境,因此默认值不是适当的,而是对我有利的方法。
选择适合自己的东西
由于有很多人担心VI,因此没有多少人尝试学习它,并认为自己有了“普通”编辑器会更好。
如果您了解VI并认为“常规”文本编辑器适合您,那么不错🙂
确实,您找到了您的工具,这很好,因为您可以使用该工具提高工作效率,对它感到满意,并且可能会最大限度地使用它。
但是,如果您不了解VI并认为“普通”文本编辑器适合您,那么您会丢失很多东西,并且生产力不高,那么您会想到使用“普通”编辑器。
您可以更好地了解自己的环境,并使其适合您。