vim-easymotion
在 vscode 中开启配置
- settings.json
"vim.easymotion": true, // 开启配置
"vim.leader": "<Space>", // vim 里自身的 leader 键是 \,我们将它映射为空格
1. 基于单词跳转
<leader><leader>w
作用:跳到当前光标所在位置后面区域某个单词的开头
光标所在下方区域根据每个单词高亮定位,我们只需要按对应的高亮的单词字母就可以移动到对应的位置
**注意红色字母跳转是单字母跳转,黄色的是组合跳转,比如红色只需要按 k,黄色需要按 ;h **
注意他高亮的字母都是自动生成的并不是你本身的
<leader><leader>e
作用:跳转到光标所在位置后面区域某个单词的结尾
<leader><leader>b
作用:跳转到当前光标前面区域某个单词的开头
<leader><leader>ge
作用:跳转到当前光标前面区域某个单词的结尾
2. 基于行跳转
<leader><leader>j
作用:移动到当前光标后面区域的某一行
<leader><leader>k
作用:移动到当前光标区域前面的某一行
3. 跳转到单词开头和结尾以及_和#
<leader><leader>l
作用:移动到当前光标后面区域的某个单词开头或者结尾位置
<leader><leader>h
作用:移动到当前光标前面区域的某个单词开头或结尾位置
4. 跳转到光标任意区域的任意单词的任意位置
<leader><leader><leader>j
vim-sneak
配置
- settings.json
"vim.sneak": true,
s + 两个搜索字符
作用:定位到当前光标区域后面匹配搜索字符的第一个搜索字符的位置,如果想继续查找下一个用 ;上一个用,
S + 两个搜索字符
作用:定位到当前光标区域前面匹配搜索字符的第一个搜索字符的位置
和 / 与 ?的对比
功能一样,但是减少了一次回车确认的按键
与 f 对比
f 是单行,它是全局
改键
我们不希望 s 按键替换掉我们原来的 s 的功能
我们希望将 现在 的 f 的按键功能改成 s 的,再把 s 改成原来的
- 首先我们需要再 normal 模式下修改
因为我们要把 f 替换成 s,又要把 s 替换成新的,所以这里存在一个递归问题,我们不希望它递归,只希望发现现在是 f 直接替换成 s,然后就停下来,所以我们需要在 vim.normalModeKeyBindingsNonRecursive 下修改
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["s"]
},
{
"before": ["F"],
"after": ["S"]
},
{
"before": ["s"],
"after": ["c", "l"]
},
{
"before": ["S"],
"after": ["^", "C"]
}
],
- 修改可视化模式下的
可视化模式下不支持大写的 S,所以不需要映射
"vim.visualModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["s"]
}
],
- 修改 operatorPending 模式
默认情况下 使用 operator 配合 sneak 是需要用 z 来使用的,所以我们可以将 z 也映射成 f
"vim.operatorPendingModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["z"]
},
{
"before": ["F"],
"after": ["Z"]
}
],
总结
什么情况下使用 f 什么情况下用 leader
你想定位到距离你当前光标位置比较近的字符的时候用 f,否则用 leader,因为如果用 f 得多按几次 ;
网友评论