几个大幅提升效率的 vim 插件

vim-surround

https://github.com/tpope/vim-surround

写前端代码时非常高频的几个操作:
* 标签替换
比如,将 div 替换成 p

<div>
    // ...
</div>
  • 单双引号转换
const name = "张三"

*添加(删除)引号、括号

const age = "13"

使用 vim-surround 则可以非常高效完成上述操作,其提供了对应的几项操作:

  • 增加包裹
    比如,为13添加双引号:
const age = 13

当光标位于13上时输入:ysiw" 即可,其中:

ys 意为添加操作,iwtext object 意为作用范围为当前 word,最后就是用于包裹的 "

  • 删除包裹
    比如,为"13"删除双引号:
const age = "13"

当光标位于 "13" 上时输入:ds"即可,其中:

ds 意为删除包裹,"则为要删除的目标

  • 替换包裹
    比如,替换"13"的双引号为单引号:
const age = "13"

当光标位于 "13" 上时输入:cs"'即可,其中:

cs 意为替换包裹,"则为被替换的目标,' 为替换目标

  • html/xml 标签的添加、删除、替换
    比如,替换div标签为p标签:
<div>
    1111111
</div>

当光标位于div 标签上或标签内其它非嵌套标签内时输入:cst<p>即可,其中:

cs 意为替换包裹,t指被替换的目标为标签(tag),<p> 为替换目标

删除、新增标签依葫芦画瓢即可

vim-easymotion

https://github.com/easymotion/vim-easymotion

无论是代码编辑,还是普通文本编辑,光标的精准跳转是刚需,而要精确定位光标仅使用 vim 内置的操作方式是很痛苦的,vim-easymotion 则提供了非常简单的跳转操作。

尽管其提供了非常多的跳转方式,但我觉得掌握如下一种即可满足绝大部分的场景:<leader><leader>/

<leader>是什么?可以参考 https://stackoverflow.com/questions/1764263/what-is-the-leader-in-a-vimrc-file

我将<leader>映射为了空格,所以操作为:[空格][空格]/

对于如下的代码:

const defaultTTSConfig = {
  volume: DEFAULT_TTS_VOLUME,
  speechRate: DEFAULT_SPEECH_RATE,
  voice: VoiceType.standardMaleVoice,
  bgmName: BGM_LIST[0][0],
  bgmEnabled: true,
  bgmUrl: BGM_LIST[0][1],
  bgmVolume: DEFAULT_BGM_VOLUME,
  url: '',
  fileName: '',
  author: '',
};

当我想将光标快速定位到bgmUrl时,仅需输入:[空格][空格]/bgm[回车],此时,编辑器将显示如下:
zrIMFJ.png
屏幕内匹配bgm的位置均高亮标识了,此时我们再输入p(原 bgmUrl位置)即可跳转到目的地。