outline

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

好的,你正在寻找的这类插件通常被称为“符号大纲” (Symbol Outline) 或“符号树” (Symbol Tree)。它们利用 Neovim 的 LSP (Language Server Protocol) 功能来获取代码的结构信息。

对于 C++,你需要先确保你的 Neovim 已经配置好了 LSP,并且安装了 C++ 的语言服务器,最常用的是 clangd

这里有几个非常出色的插件可以完美实现你想要的功能,它们都非常接近 VS Code 的大纲视图。

👑 首选推荐: symbols-outline.nvim

链接: simrat39/symbols-outline.nvim

这可能是最直接、最像 VS Code 大纲的插件。它提供一个侧边栏,用树状结构清晰地展示当前文件中的所有符号(类、函数、变量、宏等),并且点击即可跳转。

特点:

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

1{
2  "simrat39/symbols-outline.nvim",
3  keys = {
4    { "<leader>o", "<cmd>SymbolsOutline<cr>", desc = "Toggle Outline" } 
5  },
6  config = function()
7    require("symbols-outline").setup()
8  end,
9}

🚀 强大备选: aerial.nvim

链接: stevearc/aerial.nvim

Aerial 是另一个功能极其强大的大纲插件。它不仅能显示符号,还能与 nvim-navic (一个在顶部显示当前代码上下文的插件) 等工具集成,提供更丰富的导航体验。

特点:

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

 1{
 2  "stevearc/aerial.nvim",
 3  -- 可选依赖,但强烈推荐
 4  dependencies = {
 5     "nvim-treesitter/nvim-treesitter",
 6     "nvim-tree/nvim-web-devicons"
 7  },
 8  keys = {
 9    { "<leader>o", "<cmd>AerialToggle<cr>", desc = "Toggle Outline" }
10  },
11  config = function()
12    require('aerial').setup({
13      -- 你可以在这里进行各种定制
14      -- 比如,默认在打开文件时自动打开 aerial
15      -- on_attach = function(bufnr)
16      --   vim.api.nvim_create_autocmd("BufEnter", {
17      --     buffer = bufnr,
18      --     callback = function()
19      --       require("aerial").open({focus = false})
20      --     end
21      --   })
22      -- end
23    })
24  end,
25}

🚁 轻量备选: Telescope (内置功能)

如果你已经在使用 nvim-telescope/telescope.nvim,你其实已经有了一个轻量级的大纲功能,它不是一个持久的侧边栏,而是一个可以随时呼出的浮动搜索框。

如何使用: 在普通模式下,直接输入命令:

1:Telescope lsp_document_symbols

这会弹出一个浮动窗口,列出当前文件所有的符号,你可以通过模糊搜索快速定位并跳转。

特点:

建议为它绑定一个快捷键:

1-- 在你的 Telescope 配置或键位配置文件中
2keys = {
3  { 
4    "<leader>os", -- 'o' for outline, 's' for symbols
5    "<cmd>Telescope lsp_document_symbols<cr>", 
6    desc = "Outline Symbols" 
7  },
8}

总结与如何选择

插件UI 风格优点适合场景
symbols-outline.nvim侧边栏 (Sidebar)最像 VS Code,直观易用想要一个固定、常驻的大纲视图来随时查看代码结构的用户。
aerial.nvim侧边栏 / 浮动窗口功能最强大,高度可定制,集成性好追求极致定制和强大功能,希望大纲能与其他导航工具联动的开发者。
Telescope浮动搜索框轻量,无需额外插件,搜索驱动习惯使用 Telescope 进行一切操作,喜欢用搜索代替点击,不想要常驻侧边栏的用户。

我的建议是:

如果你刚从 VS Code 转过来,想要最相似的体验,请直接安装 symbols-outline.nvim

如果你是一个喜欢深度定制和折腾的 “Power User”,可以试试 aerial.nvim

如果你崇尚极简,并且是 Telescope 的重度用户,那么使用内置的 lsp_document_symbols 就足够了。