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
意为添加操作,iw
为 text 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[回车]
,此时,编辑器将显示如下:
屏幕内匹配bgm
的位置均高亮标识了,此时我们再输入p
(原 bgmUrl
位置)即可跳转到目的地。