在 VSCode 中安装 Vim 以及 Vim 入门指南
这是《使用 VSCode和 Vim 提升你的编码能力》一书中的两章: 《安装 VSCodeVim》和《Vim入门》。
为了将 Vim 的强大功能引入 Visual Studio Code,您需要安装VSCodeVim 插件:
- 打开 Visual Studio Code
- 前往扩展程序
vim在搜索框中输入- 第一个名为Vim 的插件就是你想要的(VSCodeVim)。
- 点击安装按钮
- 史诗般的胜利!
Visual Studio Code 完成扩展程序安装后,您可能需要重启它才能使更改生效。
你重启过吗?
太好了!打开你最新项目里的一个代码文件,看看光标。它看起来像个矩形吗?是的?
那么,欢迎来到 Vim!
你使用 VSCode 命令面板吗?
如果你还没用过,那你一定要试试。
CMD-SHIFT-P在 Mac、CTRL-SHIFT-PWindows 或 Linux 系统上输入命令,就能打开命令面板。从这里,你只需输入命令,就能访问 Visual Studio Code 中的几乎所有功能。例如,输入“扩展程序”,然后选择“显示扩展程序”即可进入扩展程序选项卡。是不是很棒?四处搜索一下,看看能不能找到你日常工作流程中常用的功能。
掌握快捷键,例如
CMD-SHIFT-P打开命令面板或CMD-P跳转到文件,对于建立以键盘为中心的工作流程和提高你在 Visual Studio Code 中的工作效率至关重要。所以,学习并运用它们吧。你会感谢我的。
Vim入门指南
矩形光标……真奇怪!如果你现在尝试输入文字,你会惊讶地发现什么都没发生。或者更准确地说,你预期会发生的事情都不会发生。首先,当你敲击键盘时,屏幕上不会显示任何字符。事实上,你很可能在输入过程中误触到一些特殊指令,这些指令要么会让你的光标在屏幕上乱飞,要么甚至会删除或编辑某些代码。
所有这些奇怪且出乎意料的行为都是普通模式造成的,普通模式是 Vim 中与代码交互的默认模式。而在普通模式下,用户是不会插入文本的。
那么,什么是正常模式?此外,“模式”到底是什么意思?
Vim 中的模式
模式是 Vim 中最重要、影响最大的设计决策之一,因此花点时间真正了解模式的含义以及它们如何影响 Vim 开发人员的体验是值得的。
Vim模式遵循“根据不同情况选择合适的帽子”的原则。根据手头的任务,你可以(比喻意义上)戴上合适的帽子,从而更好地调整你的思维方式、行为和心态以适应当前情况。例如,如果你正尝试用新颖的方式解决问题,你可以戴上一顶探险家的帽子,展现你的探索精神。如果你想在棘手的情况下展现无畏和勇气,你可以戴上一顶维京头盔。需要外交手腕?那就戴上一顶朝臣的帽子,等等。
类似地,Vim 编辑器也拥有不同的模式,以更好地适应不同的任务。例如,以下是 Vim 中三种最常用的模式:
就像戴帽子一样,使用 Vim 时,如果需要插入文本,就应该使用插入模式;如果需要编辑文本或浏览代码库,就应该使用普通模式;如果需要选择文本,就应该使用可视模式。
但模式究竟是什么意思?在文本编辑器中,“适应当前任务”又意味着什么?
本质上,这意味着键盘会根据你所处模式的不同而拥有不同的功能。也就是说,根据你所处模式的不同,在键盘上输入同一个键会产生不同的结果,这些结果会根据该模式进行调整。以字母w为例。w在任何模式下输入 都会发生以下情况:
- 在插入模式下,您将像在任何其他编辑器中一样输入字母。
w - 在普通模式下,你会将光标移动到下一个单词的开头。
- 在可视模式下,您可以选择文本,直到并包括下一个单词的开头。
那么,Vim 作为模态编辑器能给我们带来什么好处呢?
由于模式的存在,键盘在每种模式下都如同空白画布一般。这意味着 Vim 可以完全自由地调整键盘布局,以达到执行当前任务的最佳效率,让您所需的功能触手可及。因此,与其他非模式编辑器不同,Vim 无需依赖复杂的组合键CTRL+ALT+SHIT+something。这意味着您的操作速度更快、效率更高,并且能够更好地保护您的手腕和手指。
正常模式
因此,Vim 的默认模式是普通模式(与大多数其他编辑器默认且唯一的模式——插入模式——相对)。在普通模式下,你不会插入文本,而是在代码中移动和编辑。这种设计理念源于一个认识:我们花在阅读、浏览和修改代码上的时间远远超过最初插入代码的时间。
普通模式一开始可能会让人感觉很棘手,因为按下任何键都可能导致意想不到的结果。所以,最好事先做一些准备再进入普通模式。以下是你需要掌握的基本知识,帮助你顺利进入Vim模式并开始提升你的Vim技能:
- 拿着钥匙四处走动
hjkl。 - 进入插入模式,即可
i像往常一样输入内容。 - 使用
<ESC>,<CTRL-C>或恢复正常模式<CTRL-[>。
Vim 最基本的操作
hjkl是 Vim 中最核心、最基本的移动操作。它们允许你将光标向各个方向移动一个空格:
它们并非在 Vim 中移动最有效或最便捷的方式,但它们确实能让你在普通模式下灵活自信地浏览文件。学会有效使用它们,就好比学习走路或骑自行车一样。hjkl
当你熟悉了更多 Vim 手势后,它们用得就不hjkl那么频繁了,但它们在短距离移动和小幅修正时非常方便。j它们k在文件资源管理器、命令面板和“转到”窗格中也很有用,因为它们允许你上下移动和选择不同的项目。
从普通模式到插入模式再返回
这个键可以让你在光标移动后i进入插入模式。在你刚开始使用 Vim 的时候,你可以把它看作i是通往理智的避风港。如果你感到压力很大,或者感觉自己毫无进展,不妨输入 `+` i,跳转到插入模式,回到安装 Vim 之前编辑器运行的状态。
当你感觉精力和热情恢复后,可以输入 `Ctrl+C`或 ` Ctrl+D` <ESC>,即可返回普通模式,在该模式下你可以编辑和浏览代码。随着你信心的增强和命令的学习,你会发现自己越来越多地使用普通模式,只有在需要进行精确的文本编辑时才会切换到插入模式。<CTRL-C><CTRL-[>
<ESC>而且<CTRL-[>打字可能不太舒服,所以我通常建议你使用快捷键<CTRL-C>。由于你会CTRL经常用到快捷键(虽然不如其他编辑器那么频繁),我建议你遵循以下技巧:
将 Caps Lock 键映射到 Control 键
使用 Vim(以及任何其他编辑器)时,将Caps Lock键重新映射到Control 键会非常方便。
这样做意味着你现在可以很方便地从主键区够到编程中非常常用的按键,例如Control 键。你只需要将小指向左伸出半厘米就行了。
如果你用的是Mac,可以直接在“系统偏好设置”>“键盘”里重新映射这些按键。否则,你可能需要安装一些额外的软件来帮你完成按键映射。这应该很简单。谷歌是你的好帮手,自己去搜一下吧。
致 Windows 和 Linux 用户的重要提示
等等……<CTRL-C>回到普通模式?我一直以来复制东西不就是用普通模式吗?
安装 VSCodeVim 会产生一些副作用。一是会出现我们刚才讨论过的那种奇怪的方形光标,二是某些常用键会被重新映射到 Vim 中的相应功能。例如:
<CTRL-C>不再复制,而是将你带回普通模式。我们在 Vim 中用于复制的命令要简洁得多:(y用于 yank)。<CTRL-V>不再粘贴,而是进入可视化块模式。同样,我们在 Vim 中使用的粘贴命令更简洁:只需一个p(用于粘贴)。<CTRL-F>它不再允许您进行搜索,而是允许您向前滚动屏幕一页。再次强调,我们在 Vim 中用于搜索的命令更方便您使用:/{term-i-am-searching-for}。
根据你的冒险精神和对不适感的承受能力,你可能希望保持当前的按键设置不变,而不是继续使用 Vim 所做的更改。如果你暂时想要禁用这些按键重映射,可以使用以下两种 VSCodeVim 配置:
vim.useCtrlKeys启用或禁用按键重映射CTRL。设置为“是”时false,复制、粘贴、查找等按键将恢复为 VSCode 的默认设置。设置为“否”时true,Vim 将接管按键映射。vim.handleKeys它允许您更精细地控制哪些映射可以启用或禁用。它是一个键值对字典,其中键是您要启用/禁用的按键组合,值是一个布尔标志,表示 Vim 是否为该按键组合启用。例如,使用 `"<C-d>": truetrue` 表示该按键组合<C-d>由 Vim 处理,而将其设置为 `false`false则会恢复为 VSCode 的原生功能。
受这些重新映射影响的键的完整列表可以在VSCodeVim 扩展的package.json文件中的相应部分找到。keybindings
概括
安装 VSCodeVim 后,你的 VSCode 编辑器会变得稍微有些不同。Vim 依靠各种模式来提高效率,而 Vim 的默认模式是普通模式,在这种模式下你不会在屏幕上输入任何文本。
普通模式针对文本编辑和代码库浏览进行了优化。我们通常花费更多时间编辑和探索代码,而不是从头开始编写代码,因此这是一个巧妙的设计决策。不过,一开始可能会感觉有点不知所措,所以了解一些可以用来获得基本自主权的快捷键很有帮助:
- 用于
hjkl移动。 - 用于
i返回插入模式,您可以在其中像在原生 VSCode 中一样进行输入。 - 使用
<ESC>或<CTRL-C>即可<CTRL-[>返回正常模式。
现在你已经更好地理解了 Vim 的设计理念,并且掌握了这些基本的按键映射,可以继续提升你的 Vim 技能,朝着更优秀的编程者迈进。加油!
-
就在我写这本书的时候,Visual Studio Code 的新版本发布了,它支持插件安装后即可立即使用。但谁也说不准……重启总是更稳妥 。
-
我以前 在 Windows 系统下用过KeyTweak 。那是在我加入苹果粉丝大军(包括男粉丝和女粉丝)以及其他潮人行列,入手一台 Mac 之前很久的事了。↩





