VSCode VIM Part I - EasyMotion
Preview
VSCode 作为宇宙第一IDE☝🏻,在文本跳转上体验比LazyVim稍逊一筹。发现VSCode Vim插件支持easymotion插件,在此基础上改改键位映射可以实现对LazyVim的拙劣模仿, 效果如下
当然也可以下载neovim插件,可以直接在VSCode中使用LazyVim的插件。据说neovim插件的性能更佳、但稳定性无法保证。
Steps
Install VSCode Vim Extension
1
code --install-extension vscodevim.vim
Similar Extensions
如果不习惯 Vim 的操作方式,可以使用以下扩展来实现类似的功能:
Modify settings.json
将如下配置粘贴到VSCode 的 settings.json
文件中, use catppucin mocha theme btw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
// leaderkey,这里设置为等号键
"vim.leader": "=",
// 启用 EasyMotion
"vim.easymotion": true,
// Catppuccin Mocha Color Scheme
"vim.easymotionDimBackground": true,
"vim.easymotionMarkerBackgroundColor": "#1e1e2e",
"vim.easymotionMarkerForegroundColorOneChar": "#f38ba8",
"vim.easymotionMarkerForegroundColorTwoCharFirst": "#fab387",
"vim.easymotionMarkerForegroundColorTwoCharSecond": "#f9e2af",
"vim.easymotionIncSearchForegroundColor": "#a6e3a1",
"vim.easymotionDimColor": "#6c7086",
"vim.easymotionMarkerFontWeight": "bold",
// LazyVim-Like Key Bindings
"vim.normalModeKeyBindings": [
{
"before": [ "s" ],
"after": [ "<leader>", "<leader>", "/" ]
},
{
"before": [ "f" ],
"after": [ "<leader>", "<leader>", "f" ]
},
{
"before": [ "F" ],
"after": [ "<leader>", "<leader>", "F" ]
},
]
}
Keybinding Remap
VSCode Vim 插件应该是不支持直接修改 EasyMotion 的 keybinding 的,上面的设置算是一种变通方法。
以 <leader><leader> / <char> ... <CR
为例,在normalModeKeyBindings
中添加一个映射,这样在按下 s
键时就会被替换为 <leader><leader> /
,然后再输入任意字符进行搜索即可
Keybinding Reference
Motion Command | Description |
---|---|
<leader><leader> s <char> | Search character |
<leader><leader> f <char> | Find character forwards |
<leader><leader> F <char> | Find character backwards |
<leader><leader> t <char> | Til character forwards |
<leader><leader> T <char> | Til character backwards |
<leader><leader> w | Start of word forwards |
<leader><leader> b | Start of word backwards |
<leader><leader> l | Matches beginning & ending of word, camelCase, after _ , and after # forwards |
<leader><leader> h | Matches beginning & ending of word, camelCase, after _ , and after # backwards |
<leader><leader> e | End of word forwards |
<leader><leader> ge | End of word backwards |
<leader><leader> j | Start of line forwards |
<leader><leader> k | Start of line backwards |
<leader><leader> / <char>... <CR> | Search n-character |
<leader><leader><leader> bdt | Til character |
<leader><leader><leader> bdw | Start of word |
<leader><leader><leader> bde | End of word |
<leader><leader><leader> bdjk | Start of line |
<leader><leader><leader> j | JumpToAnywhere motion; default behavior matches beginning & ending of word, camelCase, after _ and after # |
Ref
VSCodeVim/Vim: ⭐ Vim for Visual Studio Code
ggandor/leap.nvim: Neovim’s answer to the mouse 🦘
VSCode VIM Part I - EasyMotion