小鱼儿clouding的博客

在VSCode中使用Vim

你的下一个Vim又何必是Vim

在VSCode中使用Vim

Vim 与 VSCode 介绍

Vim\mathrm{Vim} 是一个高度可定制的文本编辑器,具有强大的键盘快捷键和插件系统。它的模式化编辑使得用户可以快速地进行文本操作,而不需要依赖鼠标。

VSCode\mathrm{VSCode} 是一个现代化的代码编辑器,具有丰富的扩展和调试功能。它支持多种编程语言,并且可以通过插件进行功能扩展。

通过在 VSCode\mathrm{VSCode} 中安装 Vim\mathrm{Vim} 插件,用户可以在享受 VSCode\mathrm{VSCode} 现代化界面的同时,使用 Vim\mathrm{Vim} 的强大编辑功能。这种组合可以大大提高开发效率和编辑体验。

如何在 VSCode 中使用 Vim

插件安装

在 VSCode\mathrm{VSCode} 扩展商店 中搜索插件 Vim,选择第一项进行安装:

vim

config 配置

安装完插件后,打开setting.json文件,在{}中添加以下内容:

{
    "vim.easymotion": true,
    "vim.incsearch": true,
    "vim.useSystemClipboard": true,
    "vim.useCtrlKeys": true,
    "vim.hlsearch": true,
    "vim.insertModeKeyBindings": [
    {
        "before": ["j", "j"],
        "after": ["<Esc>"]
    }
    ],
    "vim.normalModeKeyBindingsNonRecursive": [
    {
        "before": ["<leader>", "d"],
        "after": ["d", "d"]
    },
    {
        "before": ["<C-n>"],
        "commands": [":nohl"]
    },
    {
        "before": ["K"],
        "commands": ["lineBreakInsert"],
        "silent": true
    }
    ],
    "vim.leader": "<space>",
    "vim.handleKeys": {
    "<C-a>": false,
    "<C-f>": false
    },

    "// To improve performance",
    "extensions.experimental.affinity": {
    "vscodevim.vim": 1
    }
}

以上为 Vim\mathrm{Vim} 插件的初始设置.

如果你之前已经掌握了 Vim\mathrm{Vim} 的基本操作方法,那么恭喜你,你基本可以流畅的在 VSCode\mathrm{VSCode} 中使用 Vim\mathrm{Vim} 了.

以下为关于 Vim\mathrm{Vim} 基础操作的介绍.

Vim 的四种模式

Normal 模式

用来执行移动、删除、复制等操作,可通过<Esc>回到此模式。

Insert 模式

按i进入编辑状态,像普通文本编辑器一样插入文本。

Visual 模式

按v进入,可高亮选择文本进行批量操作,如复制剪切。

Command 模式

输入:后跳转命令行,可执行保存、退出、替换等操作。

Vim 基础指令

以下 cheatpaper 可供新手使用时参考:

vim-cheatpaper

  1. h / j / k / l

    基本光标移动,h向左,j向下,k向上,l向右,比起方向键更高效

  2. i / I

    进入插入模式,i在当前位置插入,I在行首插入

  3. a / A

    进入插入模式,a在当前位置后插入,A在行尾插入

  4. v / V

    进入可视化模式,v字符选择,V行选择,Ctrl+v块选择

  5. :w / :q / :wq / :q!

    保存、退出、保存并退出、强制退出不保存

  6. u

    撤销上一步操作,可多次使用回退多步

  7. Ctrl+r

    重做被撤销的操作,与u命令相反

  8. yy / dd

    yy复制整行,dd删除整行并保存到剪贴板

  9. p / P

    粘贴剪贴板内容,p在当前行后粘贴,P在当前行前粘贴

  10. gg / G

    快速移动到文件首行/尾行,5G跳转到第5行

  11. /xxx

    向下搜索”xxx”文本,可使用正则表达式

  12. n / N

    n查找下一个搜索结果,N查找上一个结果

  13. x

  14. 删除当前光标下的字符,相当于普通编辑器的Delete键

  15. dw

    删除从光标到单词结尾的内容,d3w删除三个单词

  16. y$

    复制从当前位置到行尾的所有内容

  17. y0

    复制从行首到当前位置的所有内容

  18. y} / y{

    复制从当前位置到下一段落/上一段落的所有内容

  19. Ctrl+f / Ctrl+b

    向前/向后翻页,相当于PageDown/PageUp

  20. :%s/旧/新/g

    全局替换文本,%s/旧/新/gc会在每次替换前询问确认

  21. ciw / diw

    ciw更改整个单词,diw删除整个单词,不管光标位置

  22. .

    重复上一次操作,非常实用的提高效率命令

  23. o / O

    o在当前行下方新建一行,O在当前行上方新建一行

  24. :help 命令

    查看任意命令的帮助文档,如:help dd

相关插件推荐

SmearCursor

该插件能够让你在光标移动时获得如 neovideneovide 一样的特效.

在 VSCode\mathrm{VSCode} 扩展商店 中搜索插件 SmearCursor,选择第一项进行安装:

smearcursor

安装完成后,ctrl + shift + P或者command + shift + P,运行命令smearcursor.enable.

Relative line numbers

该插件能够显示每行相对于当前光标所在行的差数,方便j、k快速跳转.

在 VSCode\mathrm{VSCode} 扩展商店 中搜索插件 Relative Line Numbers,选择第一项进行安装:

Rln

安装完成后,ctrl + shift + P或者command + shift + P,运行命令extension.relativeLineNumbersEnable.

修正(2025.4.6): 现在可以直接在设置中勾选 Vim: Smart Relative Line 选项, 实现相同的目的