鱼和熊掌:VSCode+Vim

最近几天比特币迎来2018年最大跌幅,距离去年年底最高点大概跌去了80%左右,其他山寨币也不能幸免。曾经沉迷其中,有过快速发家致富的幻想,无奈最后成为了庄家盘中的韭菜。
痛定思痛后,告诉自己零和游戏还是少玩,做好本职工作搬砖敲代码。

废话不多说进入正题。 VSCode是新生代当红编辑器,Vim是历史悠久
Editor,两者组合在一起产生神奇的化学反应,可以有鱼和熊掌兼得的效果, 本文介绍如何在 vscode 下使用 vim。

为什么要使用 vim?


作为一个程序员快速码字是一个刚性需求,通常情况下我们会学习编辑器的快捷键来提高输入的效率。

比如,Ctrl+P:搜索项目中的文件, Ctrl+X:删除当前行等等,可以说快捷键极大提高了输入的速度。

然而代码写多了,会有一些自己输入的需求,而编辑器不一定有对应的快捷键。

比如("xxx") ,需要快速修改或者删除""里面的内容, 通常我们需要移动光标然后按删除键来操作,这样做没问题,可是心里总觉得不爽,一定是可以优化的,于是在网上找。发现在 vim 下可以轻松搞定,只需要在normal 模式下输入 ci" 就可以实现我想要的功能。
于是,决定试试 vim 恰好vscode下有这个插件。

vim 入门


因为 vim 提供了多种编辑模式,强大的操作命令,使得学习成本会比一般的编辑器高很多,这也是一般人望而却步的原因。

vim 详细的使用就不多介绍,网上有大量的文章和学习教程,入门的话推荐看简明Vim 练级攻略

这里重点总结一下自己的入门过程。
不同于一般的编辑器,vim 提供了 3 个基本模式:normal , insert , visual。
刚开始很不适应,特别是 insert 模式下打错字了来删除重来。
后来发现 insert 模式下通过 ctrl+h ctrl+w ctrl+u 来删除前一个字符,前一个单词,前面一行所有字符非常方便。
在 normal 模式下转 insert 模式,有三种途径。

  1. a 光标之后插入 A 行尾插入。
  2. i 光标之前插入 I 行首插入。
  3. o 下一行插入 O 上一行插入。

操作() "" [] {} 中间的内容, Surround 模式下用cs{ ds{ 命令就可以修改 或者删除{} 之内的字符。

解决了常用输入技巧后,接下来需要不断地练习来强化肌肉记忆。

另外,我会每天看一下vim cheat sheet 来练练手。


vi-vim-cheat-sheet-sch

VSCodeVim 插件


VSCodeVim 是 vscode 下 vim 的模拟器插件,vim 的大部分功能都支持除了 Vimscript。

以下是我的 vscode vim 设置.


setting

为了方便切换用j j 替换 esc键,用ZZ ZQ退出编辑。

总体感觉vim没有想象那样难学,差不多花了3天左右的时间来适应基本可以上手了,PS: 本文就是在vim模式下撰写。

------------------------update------------------

解决烦人的拼音切换问题。

在insert模式下如果是中文输入法,切换到normal模式默认还是中文输入,所以移动jk 会出现拼音提示,需要手动切换才能消除。
好在vscode vim 官方给出了解决方案,可以自动完成切换过程。

  1. 安装 im-select: Switch your input method from terminal

  2. 修改配置

"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"

续篇 VSCode Vim进阶操作

推荐阅读更多精彩内容