
像任何开发人员一样,您正在不断开发。 您正在通过阅读书籍,观看在线课程,参加某些课程等等来学习新技术。 您知道,如果您停止学习,就会失去竞争力。 但是您是否考虑过您的表现? 您如何改善呢? 如果您不知道该如何回答,欢迎与我们联系。
0级-征服恐惧
触摸打字
这篇文章不是关于触摸打字的 。 尽管如此,这是对上述问题的第一个答案。 要理解本文的其余部分,您必须管理触摸打字。
Vim简介

在本文中,我将告诉您如何提高编码速度,如何更快地导航代码以及如何摆脱计算机鼠标。 我们将讨论VIM (人类已知的最佳文本编辑器)。 用过硬的手,它只是一个笨拙的文本编辑器,而且没人知道如何退出它。 但是实际上,它是高度可配置的文本编辑器(或几乎所有IDE的插件),旨在使您以最有效的方式管理代码。 VIM不仅是文本编辑器。 看起来并不疯狂,但是想像一下您不会编码,而是与计算机对话。 因此,您的编码过程可能建立在以下独白中:
- 在这里我将输入:
string text = file.ReadAll();
- 在此上方创建一个空行
- 将所有带有
TODO
注释的行移到该文件的末尾 - 导航到功能
GetDirectoryFiles
并复制其所有内容 - 导航到该“ if”语句,并将其内容替换为缓冲区中的文本
- 将此线居中在屏幕中间
但是,如果您想跳舞,就得付钱给吹笛者。 要与VIM“交谈”,您必须学习具有自己的名词,动词,形容词等的语言。 这就是为什么VIM没有快捷方式,而只有句子(例如,更改内部标签)的原因 。 当您学习该语言的基础知识时,您将可以根据自己的意愿来组合自己的句子。 之后,您将了解您不再需要鼠标。
开始学习这种语言并不容易,因为它的所有组成部分都应该成为您的习惯。 这对您自己是一个痛苦的挑战,可能需要至少2周的时间,因此在开始之前请三思。 但是,如果您克服了它,您将打开代码管理的新天地。
快速数据输入的主要好处不是每秒节省数据输入时间,而是双手可以跟上大脑的机会增加。
1级-生存
VIM的最大特色是具有模式。 我们可以定义它们的主要四个:
- 普通模式-您可以在此处键入文本命令并进行导航。 要进入此模式,请按
ESC
- 插入模式-在此模式下,您可以像在其他编辑器中一样键入文本。 要进入此模式,请按
i
- 可视模式-您可以在此处选择文本。 要进入此模式,请按
v
- 命令模式-编辑器命令(如保存,打开等) 。 要进入此模式,请按
:
另外,您还必须学习在正常模式下有效的基本导航。 忘记箭头,因为它们使用起来很慢。 键入时,通常将手指放在键盘的中间。 左手放在asdf上 ,右手放在jkl上; 。 通常,您在代码中向上/向下导航,而很少向左/向右导航(稍后我们将讨论行内导航)。 因此,VIM中的导航如下:
要习惯基本运动,您可以玩VIM Adventures游戏 。 实际上,这就是您开始所需要知道的。 因此,在您喜欢的IDE上安装vim插件并进行练习。 请记住,这将很难。

2级-信心
好的,您决定学习VIM,这真棒。 让我们确保您做对了。 您的手指已经习惯了hjkl
导航,并且您还知道如何将模式从一种更改为另一种。 如果是真的,那么您就准备好了。
获取插入模式
您知道可以通过按键盘上的i
进入此模式。 让我们认为i
代表插入作为光标前的插入文本。 您也可以按代表光标后面的追加文本的a。 通过更改大小写可以很容易地增强这些命令,因此结果如下: I
在行的第一个非空白之前插入文本,而A
在当前行的末尾添加文本。
为了使您的未来工作更加愉快,您必须知道命令o
,该命令在当前行之后添加一个新的空白行,而在当前行之前执行相同的操作。
这些是VIM中最常用的插入模式切换命令。 如果您调整为hjkl
导航,将需要几天的时间来习惯这些命令。 您在训练中出汗越多,在战争中流血就越少。
普通模式
在开始学习VIM语言之前,我们还应该提高导航技能。 在这个问题中,命令f
(代表find )将为我们提供帮助。 此命令用于在当前行中导航。 您键入f
和要将光标移动到的字母。 fP
将光标从当前位置移动到字母P的第一个出现位置。 您可以将此命令加电至F
,该操作相同,但是会更改搜索方向。
Vim语言
现在是时候成为一个疯狂的怪胎了。 您应该在正常模式下与VIM“对话”。 首先,让我们考虑一下VIM语言的一些构造:
名词:
w
字
s
句子
p
段落
b
(块/括号)
t
标签
{
, }
, (
, )
, [
, ]
-大括号
"
, '
-引号
动词:
v
可视化c
更改(删除文本并将VIM切换到插入模式)d
删除和复制(删除文本并且不更改VIM模式)y
猛拉(意味着复制)
副词:
请注意,这些命令本身可能无法正常运行。 而且,当您创建VIM句子时,它应该足够了,所有构造都应放在其位置上,否则,您将获得另一个结果。 现在让我们创建一些简单的VIM句子作为示例:
ciw
更改单词内-删除光标下的整个单词并切换到插入模式,与cw
不同, cw
将从光标中删除一个单词到该单词的末尾。cis
更改句子内部。ci"
-在内部更改”大括号-删除“大括号之间的所有文本。da}
-左右括号删除-删除大括号内的所有文本,包括它们。vip
段落内部可见-选择所有段落。ctp
更改直到p-删除从此处到字母p的所有内容 。

现在,要扩展您的VIM语言,建议您学习新的VIM构造-数字修饰符。 让我们考虑以下代码:
function foo() { function bar() {
并且您想删除foo
函数{}内的所有代码。 使用数字修饰符很容易做到。 只需键入2ci{
-更改大括号内2次即可。

数字修饰符不仅适用于句子,而且几乎适用于所有地方:
5j
移动光标5次。2fK
将光标移动到行中第二个出现的垃圾k 。2iHello <ESC>
-插入Hello
2次。
坚持不懈
在学习VIM时,您会发现一些新的语言结构并扩展了VIM语言。 日复一日,与VIM“交谈”会更容易。 VIM的存在已有20多年的历史,所有的命令和语言结构都紧密地结合在一起并被创建以最大化您的性能。
3级-精通
您正要成为VIM管理员。 您可能会发现,学习VIM并不是那么容易。 当您感觉使用VIM拥有强大的功能时,您会需要更多的东西,而这正是本部分的内容。 所有主题都是从表面上发现的,以便您决定自己想要什么。
VIM不是IDE
是的,尽管您可以将VIM设置为执行几乎所有IDE功能,但它不是IDE 。 我确定您不会离开自己喜欢的Visual Studio或WebStorm,这就是为什么我不仅为您的IDE准备了插件列表。
- VSVim for VisualStudio
- VS VIM for VSCode
- 适用于WebStorm,IntelliJ IDEA(和其他Jetbrains产品)的IdeaVim
- Sublime文字开箱即用的是Vintage模式
- 原子的Vim模式
- XVim for Xcode
- 铁杆! 不要在家重复此操作! Google Chrome浏览器还具有类似于VIM导航的扩展。 (在Chrome商店中找到)
不过,您必须记住,仅使用VIM即可实现最高性能。 基本上,它适合于小型js / html / css项目,编辑配置文件或仅作为记事本++的替代品:)
Vim插件
VIM有成千上万的插件可用于任何随想。 在这里,您可以找到几乎所有想要的东西,从文件资源管理器和git集成到构建系统。
我最喜欢的插件之一是EasyMotion 。 创建它是为了加快您在VIM中的导航。 EasyMotion非常复杂,并且已深深地集成在VIM哲学中。 例如,如果您只想导航到当前行后面的特定行,则可以通过按几次j
键来执行此操作。 相比之下,使用EasyMotion可以按首标键(在我的情况下为TAB
)和j
突出显示所有后面带有不同字母的行。 剩下要做的就是按下代表您需要的行的字母。

就我而言,我按下TAB
键和ju
导航到相应的行。 这是最简单的示例,并且像往常一样,在VIM领域,您可以根据自己的需要制作几乎任何命令。
对应
我决定单独考虑此功能。 您可能会考虑将映射作为所有模式的键绑定。 也就是说,您可以绑定某种模式以不同的方式执行某些操作。
因此,让我们看一个简单而真实的示例。 几乎每个在VIM中工作的人都不会通过按ESC
从插入模式更改为普通模式。 我们通过按jj
或jk
因为我们具有以下映射:imap jj
< ESC
>。 imap
代表插入模式映射,表示仅在插入模式下工作。
您可以映射想要做的所有事情,这将节省您的时间。 在此处阅读有关映射的更多信息。
Vim功能
除了上述功能之外,VIM中还有很多东西要学习。 您绝对应该注意以下列表:
- 全局命令
- 搜索并替换
- 宏和寄存器
- 缓冲区
- 标签
- 压痕和折痕
- 自动命令
它们可能存在于其他开发工具中,但这是VIM。 日复一日,您会想知道所有这些东西的构造多么辉煌。 检查一下以确保。
构型
为了将所有具有VIM插件的编辑器使用相同的设置,必须将许多VIM设置存储在某个位置。 这是.vimrc文件的责任。 默认情况下,在Windows 10中,此文件位于C:\Users\%username%
。 在这里,您可以设置所有映射,自动命令,插件,配色方案和所有其他设置。 我找到了一篇不错的文章, 介绍如何设置自己的.vimrc文件,以便您可以自己练习。
注意:请勿在您不了解的.vimrc中添加任何行
很棒的VIM课程:

愿VIM与您同在。