Open Jiavan opened 5 years ago
最近把开发环境从 WebStorm 迁移到了世界上最好的编辑器 VSCode,因为需要经常开启多个项目,CPU 和内存都爆了只能弃坑。使用过一段时间 vsc 发现里面自带插件库有个叫做 vscodevim 的插件特别有意思。它使用了一些诡异的键位和模式,和普通编辑体验差别很大,但是一看评价这么高,下载量这么大,我一度怀疑自己。看来大家都很认可这个插件,坚持使用了一段时间,发现这些诡异的键位用起来是真的特别爽,颠覆了我对文本编辑体验的认知。接下来我要开始安利了!
要学会使用 vim 首先要弄清楚它和其他编辑器最大的区别之一就是它拥有多个模式,而其他大部分编辑器就只有编辑模式,直接就能插入修改删除,作为一篇安利入门性质文章,我们需要知道 vim 中最重要的四种模式。
:wq
vim 不止这四种模式,但是这几种是比较常用到的,更多模式可以看 vim 文档。
vim 对文本进行了抽象,句子由单词组成,段落由句子组成,文章由段落组成,如一个单词就是一个 text-object,它配合 operator 可以进行一些非常高效的操作。常见文本对象的类型:
如果结合下面要提到的 operator 就可以组合成一个指令如:daw(delete a word) 即可删除当前光标下的单词。
vim 中使用一些 motion 可以快速的来移动光标,如:
一个 vim 命令可以由 operator、number、motion 组成,我们先看 operator,它指的是一些操作如:
现在结合 operator / motion / number:
在 vim 中有一个逆天的插件 vim-surround 现在 vscodevim 中集成了它。它可以很方便的来处理环绕文本,在代码中总会有一些 (){}[]<>''"" 符号,这个插件能很方便的处理它们。在 normal 模式下:
(){}[]<>''""
# cs"' 将双引号变成单引号 "hello world" -> 'hello world' # cs"<p> 把双引号变成 p 标签 "hello world" -> <p>hello world</p> # ds" 删掉两侧双引号 "hello world" -> hello world # ysaw' 给 hello 加上单引号 "hello world" -> "'hello' world"
更多使用可以查看 https://github.com/tpope/vim-surround。
附上一张 vim 键位图,vim 开始适应需要一段时间,当形成肌肉记忆了用起来就很爽了。
VSCode 如果在 vi 的 insert 模式下使用了中文输入法,当回到 normal 模式的时候将会还是中文输入法,然后你使用 JKLH 的时候出现一堆拼音这样显然是很恶心的,被迫还要手动切回英文输入法,这里 VSCodeVim 其实已经提供解决方案那就是在切回 normal 模式的时候自动去切换输入法。详细可以看 https://github.com/VSCodeVim/Vim#input-method。
解决方案就是首先我们安装 im-select 这个 CLI,然后在 VSCode 添加以下设置:
{ "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}" }
你的默认输入法不一定是 com.apple.keylayout.US 可以使用上面的 im-select 进行获取,然后替换成你想要设置的 defaultIM。以上是 macOS 的设置,其他平台可以参考上面 VSCodeVim 的官方文档。这样每次回到 normal 模式我们就会自动切回英文输入法。
com.apple.keylayout.US
VSCode 自带了一些快捷键也是很好用的。
最近把开发环境从 WebStorm 迁移到了世界上最好的编辑器 VSCode,因为需要经常开启多个项目,CPU 和内存都爆了只能弃坑。使用过一段时间 vsc 发现里面自带插件库有个叫做 vscodevim 的插件特别有意思。它使用了一些诡异的键位和模式,和普通编辑体验差别很大,但是一看评价这么高,下载量这么大,我一度怀疑自己。看来大家都很认可这个插件,坚持使用了一段时间,发现这些诡异的键位用起来是真的特别爽,颠覆了我对文本编辑体验的认知。接下来我要开始安利了!
模式
要学会使用 vim 首先要弄清楚它和其他编辑器最大的区别之一就是它拥有多个模式,而其他大部分编辑器就只有编辑模式,直接就能插入修改删除,作为一篇安利入门性质文章,我们需要知道 vim 中最重要的四种模式。
:wq
退出 vim。vim 不止这四种模式,但是这几种是比较常用到的,更多模式可以看 vim 文档。
Text Object
vim 对文本进行了抽象,句子由单词组成,段落由句子组成,文章由段落组成,如一个单词就是一个 text-object,它配合 operator 可以进行一些非常高效的操作。常见文本对象的类型:
如果结合下面要提到的 operator 就可以组合成一个指令如:daw(delete a word) 即可删除当前光标下的单词。
Motion
vim 中使用一些 motion 可以快速的来移动光标,如:
Operator
一个 vim 命令可以由 operator、number、motion 组成,我们先看 operator,它指的是一些操作如:
现在结合 operator / motion / number:
Surround
在 vim 中有一个逆天的插件 vim-surround 现在 vscodevim 中集成了它。它可以很方便的来处理环绕文本,在代码中总会有一些
(){}[]<>''""
符号,这个插件能很方便的处理它们。在 normal 模式下:更多使用可以查看 https://github.com/tpope/vim-surround。
附上一张 vim 键位图,vim 开始适应需要一段时间,当形成肌肉记忆了用起来就很爽了。
输入法切换问题
VSCode 如果在 vi 的 insert 模式下使用了中文输入法,当回到 normal 模式的时候将会还是中文输入法,然后你使用 JKLH 的时候出现一堆拼音这样显然是很恶心的,被迫还要手动切回英文输入法,这里 VSCodeVim 其实已经提供解决方案那就是在切回 normal 模式的时候自动去切换输入法。详细可以看 https://github.com/VSCodeVim/Vim#input-method。
解决方案就是首先我们安装 im-select 这个 CLI,然后在 VSCode 添加以下设置:
你的默认输入法不一定是
com.apple.keylayout.US
可以使用上面的 im-select 进行获取,然后替换成你想要设置的 defaultIM。以上是 macOS 的设置,其他平台可以参考上面 VSCodeVim 的官方文档。这样每次回到 normal 模式我们就会自动切回英文输入法。快捷键
VSCode 自带了一些快捷键也是很好用的。