启用插件 链接到标题

Win11 链接到标题

插件设置:Settings-user页面,Neovim Executable Paths: Win32内容设置为C:\Users\zwyyy\scoop\apps\neovim\current\bin\nvim.exeNeovim Init Vim Paths: Win32内容无需设置。

WSL 链接到标题

插件设置:Settings-Remote [WSL:Debian]页面,Neovim Executable Paths: Linux内容设置为/usr/bin/nvimNeovim Init Vim Paths: Linux内容无需设置。

MacOS 链接到标题

插件设置:Settings-user页面,Neovim Executable Paths: Darwin 内容设置为 /opt/homebrew/bin/nvimNeovim Init Vim Paths: Darwin 内容无需设置。

key bindings 中查找ctrl+c,删除与neovim有关的两项,否则会导致插入模式下无法使用ctrl+c复制(我没有选择删除)。

设置 jkesc 链接到标题

已于 1.11.1 版本废弃 链接到标题

编辑 keybings.json,添加

{
    "command": "vscode-neovim.compositeEscape1",
    "key": "j",
    "when": "neovim.mode == insert && editorTextFocus",
    "args": "j"
},
{
    "command": "vscode-neovim.compositeEscape2",
    "key": "k",
    "when": "neovim.mode == insert && editorTextFocus",
    "args": "k"
}

使用 gc 作为注释快捷键 链接到标题

已废弃 链接到标题

原先解决方案是在 neovim 的配置目录的 lua/vscode/config 目录下新建 keymaps.lua 文件,内容为:

local keymap = vim.keymap
-- local opts = { noremap = true, silent = true }
-- vscode.neovim用于注释代码的按键映射
keymap.set("v", "gc", "<Plug>VSCodeCommentary")
keymap.set("n", "gc", "<Plug>VSCodeCommentary")
keymap.set("o", "gc", "<Plug>VSCodeCommentary")
keymap.set("n", "gcc", "<Plug>VSCodeCommentaryLine")

同时修改init.lua,添加require("vscode.config.keymaps")

注意的是,这一方案随着 vscode 的 vscode.neovim 插件的更新已经失效。需要利用 neovim 中的 comment 插件来实现。

comment.nvim 链接到标题

利用 comment.nvim 来实现 vscode 的调用 gc 快捷键注释。

文件结构目录如下:

├── LICENSE
├── README.md
├── init.lua
├── lazy-lock.json
├── lazyvim.json
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   ├── plugins
│   │   ├── colorscheme.lua
│   │   ├── disabled.lua
│   │   └── example.lua
│   └── vscode
│       ├── config
│       │   ├── keymaps.lua
│       │   ├── lazy.lua
│       │   └── options.lua
│       └── plugins
│           ├── comment.lua
│           └── disabled.lua
└── stylua.toml

init.lua 的内容如下:

if vim.g.vscode then
  -- if true then
  -- Vscoe extension
  require("vscode.config.options")
  require("vscode.config.keymaps")
  -- require("vscode.init")
  require("vscode.config.lazy")
  -- require("vscode.plugins.disabled")
else
  -- bootstrap lazy.nvim, LazyVim and your plugins
  require("config.lazy")
end

lua/vscode/config/lazy.lua 的内容如下:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup("vscode.plugins")

由于 vscode.neovim 是使用本机的 neovim 作为后端的,lua/config/lazy.lua 这一段代码就是让 vscode.neovim 也能使用 lazy.nvim 来管理插件,并且能够启用 lua/vscode/plugins 中的插件。

lua/vscode/plugins/comment.lua 的内容如下:

return {
  {
    "numToStr/Comment.nvim",
    lazy = false,
  },
}

lua/vscode/config/lazy.lualua/vscode/plugins/comment.lua 配合起来即通过 lazy.nvim 插件管理并启用了 Comment.nvim 插件,之后 vscode 在 normal 模式下也可以通过 gc 或者 ngc(其中 n 表示数字)来注释一行或者多行了。

同时 lua/vscode/plugins/disabled.lua 在 vscode 中禁用了 neovim 的 tokyonight 主题,防止 vscode 的代码高亮出现异常。

同步系统剪贴板 链接到标题

lua/vscode/config/options.lua 中内容修改为:

-- clipboard
local opt = vim.opt
opt.clipboard = "unnamedplus" -- Sync with system clipboard

与 LazyVim 的融合 链接到标题

LazyVim 有一个 extras 机制,打开 nvim,输入 :LazyExtras,根据提示勾选 vscode 即可。

这样,init.lua 可以写成

require("config.lazy")
if vim.g.vscode then
else
    require("config.osc52")
end

也可以实现 kgc 来注释多行代码。

但是依旧存在问题,此种模式虽然 VsCode 不再会出现高亮异常问题,但是 vscode-neovim 的 <C-w>(h/j/k/l) 会被 LazyVim 插件本身占用。

使用 neovim 的一些插件 链接到标题

Comment.nvim 已安装,还需要安装 flash.nvim,以及 nvim-treesitternvim-treesitter-textobjectsnvim-ts-context-commentstring 即可。

见配置文件仓库。

总结 链接到标题

配置文件已存放于远程仓库 neovim_config