配置路径

如果需要自定义配置路径,则先设置好 xdg 目录,再安装 neovim,将 nvim 配置文件夹放置在 XDG_CONFIG_HOME 路径中。

没有说明的快捷键

snacks explorer

snacks explorer中,按?是帮助。 H: 显示隐藏文件 I: 显示忽略文件 i: 进行搜索

lazygit

在已经安装了lazygit的前提下,不用再自行配置lazygit插件,只需要 <leader>gg即可打开lazygit

一种较为舒适的补全键盘方案:(lua/plugins/blink.lua)

return {
  "Saghen/blink.cmp",
  opts = {
    keymap = {
      preset = "super-tab",
	  ["<CR>"] = { "accept", "fallback" },
    },
  },
}

快捷键:<c-n> <c-p> 用于选择下一个和上一个,回车用于确定选择,tab 用于snippets的跳转。

禁止 xmake.lua 自动格式化

autocmd.lua中添加:

vim.api.nvim_create_autocmd("FileType", {
  pattern = "lua",
  callback = function()
    -- 获取当前缓冲区文件名(不含路径)
    local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":t")
    -- 仅当文件名为 xmake.lua 时禁用格式化
    if filename == "xmake.lua" then
      vim.b.autoformat = false
    end
  end,
})
 

多光标

注意,使用以下配置,在按 Esc 退出多光标模式后,需要再执行 gl 以保证 <Leader> 正常工作。

return {
  "brenton-leighton/multiple-cursors.nvim",
  version = "*", -- Use the latest tagged version
  opts = {}, -- This causes the plugin setup function to be called
  keys = {
    { "<C-A-j>", "<Cmd>MultipleCursorsAddDown<CR>", mode = { "n", "x" }, desc = "Add cursor and move down" },
    { "<C-A-k>", "<Cmd>MultipleCursorsAddUp<CR>", mode = { "n", "x" }, desc = "Add cursor and move up" },
 
    { "<C-A-Up>", "<Cmd>MultipleCursorsAddUp<CR>", mode = { "n", "i", "x" }, desc = "Add cursor and move up" },
    { "<C-A-Down>", "<Cmd>MultipleCursorsAddDown<CR>", mode = { "n", "i", "x" }, desc = "Add cursor and move down" },
 
    { "<C-LeftMouse>", "<Cmd>MultipleCursorsMouseAddDelete<CR>", mode = { "n", "i" }, desc = "Add or remove cursor" },
 
    {
      "<Leader>m",
      "<Cmd>MultipleCursorsAddVisualArea<CR>",
      mode = { "x" },
      desc = "Add cursors to the lines of the visual area",
    },
 
    { "<Leader>a", "<Cmd>MultipleCursorsAddMatches<CR>", mode = { "n", "x" }, desc = "Add cursors to cword" },
    {
      "<Leader>A",
      "<Cmd>MultipleCursorsAddMatchesV<CR>",
      mode = { "n", "x" },
      desc = "Add cursors to cword in previous area",
    },
 
    {
      "gb",
      "<Cmd>MultipleCursorsAddJumpNextMatch<CR>",
      mode = { "n", "x" },
      desc = "Add cursor and jump to next cword",
    },
    { "gB", "<Cmd>MultipleCursorsJumpNextMatch<CR>", mode = { "n", "x" }, desc = "Jump to next cword" },
 
    { "gl", "<Cmd>MultipleCursorsLock<CR>", mode = { "n", "x" }, desc = "Lock virtual cursors" },
  },
}

xmake集成

return {
  "Mythos-404/xmake.nvim",
  version = "^3",
  lazy = true,
  event = "BufReadPost",
  config = true,
}

LazyExtras

输入 :LazyExtras进行插件管理,包括各种语言,可以安装:

  • coding.blink
  • coding.mini-surround
  • coding.yanky
  • editor.dial
  • editor.snacks_explorer
  • editor.snacks_picker

停止 Markdown 拼写检查

-- autocmds
vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")

Markdown-preview

安装LazyExtras安装无法浏览器预览,需要按照官网指示:

return {
  "iamcco/markdown-preview.nvim",
  cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
  build = "cd app && yarn install",
  init = function()
    vim.g.mkdp_filetypes = { "markdown" }
  end,
  ft = { "markdown" },
}

在安装了 nodejsyarn 后,重新安装 markdown-preview,才可以。

如何重新安装?<leader>l 进入 Lazy 界面,选择 markdown-preview,按 gb

一种浅色主题

-- lua/plugins/rose-pine.lua
return {
  "rose-pine/neovim",
  name = "rose-pine",
  config = function()
    vim.cmd("colorscheme rose-pine-dawn")
  end,
}

Neovide 集成

-- options.lua
vim.o.guifont = "CaskaydiaCove Nerd Font:h18"
vim.g.neovide_cursor_vfx_mode = "railgun"
vim.g.neovide_scale_factor = 1.0
 
-- keymaps.lua
if vim.g.neovide then
  vim.keymap.set({ "n", "v" }, "<C-=>", ":lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor + 0.1<CR>")
  vim.keymap.set({ "n", "v" }, "<C-->", ":lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor - 0.1<CR>")
  vim.keymap.set({ "n", "v" }, "<C-0>", ":lua vim.g.neovide_scale_factor = 1<CR>")
end

默认的常用快捷键

  • <leader>, 搜索buffer
  • explorer中按 <c-v> vsplit open
  • <c-/> or <leader>ft toggle terminal: root directory
  • <leader>fT terminal: current work directory
  • <leader>w窗口相关操作
  • <leader>bbuffer相关操作
  • 窗口与buffer相关操作:o:关闭其他,d:关闭当前
  • 下一个 buffer 和上一个 buffer:]b `[b
  • 退出软件:<leader>qq
  • <C-hjkl> 移动到其他窗口
  • <leader>cs 打开大纲视图
  • <leader>p 打开粘贴历史
  • <leader>e or <leader>E 打开文件浏览器,根目录与当前目录

Clangd

Windows 平台配置 clangd + mingw

Root 目录

lazyvim 中root_dir 设置

root_spec 设置

options.lua文件中,有以下选项:

-- LazyVim root dir detection
-- Each entry can be:
-- * the name of a detector function like `lsp` or `cwd`
-- * a pattern or array of patterns like `.git` or `lua`.
-- * a function with signature `function(buf) -> string|string[]`
vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }

可以加入我们自己的目录检测设置,例如,对于xmake项目,可以检测是否存在 xmake.lua 文件:

vim.g.root_spec = {
  "lsp",
  { "xmake.lua", ".git", "lua" },
  "cwd",
}

lsp 相关

有时,即使设置了 root_spec 选项,也有可能会出现目录检测出问题的情况。例如,我碰到了在 nvim 设置目录中打开一个文件,但是根目录检测到了用户目录的情况。

这种情况一般是 lsp 函数调用时,检测出了问题。例如,我碰到的这种情况,其实可以参考 lua lsp 的规则,然后发现,我的用户目录不清楚为什么出现了 .luarc.jsonc,删除后就正常了。为了避免再出现这个问题,可以把 root_spec 选项只保留 cwd,手动控制是最直观的。

此外,jdtls.nvim 需要特别注意,参见lazyvim 折腾 Java 环境踩坑记录

指向原始笔记的链接