bookmark

2025-09-09 00:00    #nvim   #oi  

当然,为代码行添加标记(通常称为“书签”或“Bookmarks”)以便快速导航是一个非常常见的需求。Neovim 不仅有强大的内置标记功能,还有许多优秀的插件可以极大地增强这一体验。

1 Neovim 的内置标记 (Built-in Marks)

首先,你需要了解 Neovim 自带的、无需任何插件的标记功能。它非常强大和快速。

优点: 内置,速度极快,无需配置。 缺点: 标记是不可见的,你必须记住你把哪个标记放在了哪里,或者通过 :marks 命令查看。


2 插件推荐

为了解决内置标记不可见的问题,社区开发了许多插件,它们通常会在带有标记的行旁边添加一个“符号”或“图标”,并提供更友好的交互方式。

👑 首选推荐: marks.nvim

链接: chentoast/marks.nvim

这是一个现代化的 Neovim 插件,专门用于增强内置的 marks 功能。它会让你的内置标记变得可见,并添加了许多方便的功能,是目前最优雅的解决方案之一。

特点:

使用 lazy.nvim 的安装配置示例:

 1{
 2  "chentoast/marks.nvim",
 3  event = "BufReadPost", -- 优化启动速度
 4  config = function()
 5    require('marks').setup({
 6      -- 默认标记,你可以自定义
 7      default_mappings = true,
 8      -- 你可以在这里进行详细配置
 9      -- 比如自定义图标、颜色等
10    })
11  end,
12}

默认情况下,它会映射一些快捷键,例如:

🚀 流程驱动的选择: harpoon

链接: ThePrimeagen/harpoon

Harpoon 的理念略有不同。它不只是一个简单的书签系统,而是一个面向工作流的“快速访问列表”。你可以把任何文件中的任何位置“钉”到 Harpoon 列表中,然后通过索引或快捷键在这个列表之间快速穿梭。

特点:

使用 lazy.nvim 的安装配置示例:

 1{
 2  "ThePrimeagen/harpoon",
 3  branch = "harpoon2", -- 推荐使用 harpoon2 分支
 4  dependencies = { "nvim-lua/plenary.nvim" },
 5  config = function()
 6    local harpoon = require("harpoon")
 7    harpoon:setup({})
 8
 9    -- 基础快捷键绑定
10    vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end, { desc = "Harpoon add file" })
11    vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { desc = "Harpoon quick menu" })
12
13    vim.keymap.set("n", "<C-h>", function() harpoon:list():select(1) end, { desc = "Harpoon to file 1" })
14    vim.keymap.set("n", "<C-t>", function() harpoon:list():select(2) end, { desc = "Harpoon to file 2" })
15    vim.keymap.set("n", "<C-n>", function() harpoon:list():select(3) end, { desc = "Harpoon to file 3" })
16    vim.keymap.set("n", "<C-s>", function() harpoon:list():select(4) end, { desc = "Harpoon to file 4" })
17  end,
18}

总结与如何选择

方案哲学优点适合场景
内置 Marks基础功能零开销,极速临时、一次性的快速跳转,不想安装额外插件。
marks.nvim增强内置可视化,功能全面,与原生命令结合好想要一个经典、强大、可视化的“书签”系统,让代码标记一目了然。
harpoon工作流列表任务导向,在少量固定位置间切换极其高效在重构或调试时,需要在几个(通常是2-5个)关键代码点之间高频切换。

我的建议是:

marks.nvim 开始。它最符合你“添加 mark 并快速跳转”的直接需求,并且通过可视化极大地改进了 Neovim 的原生功能,学习成本很低。

如果你发现你的工作模式经常是围绕少数几个“热点”位置展开,那么再尝试 harpoon,它可能会极大地提升你的工作效率。