A tree like view for symbols in Neovim using the Language Server Protocol. Supports all your favourite languages.
neovim 0.5+
(nightly)- Properly configured Neovim LSP client
Using vim-plug
Plug 'simrat39/symbols-outline.nvim'
Define a global variable symbols_outline
as follows:
-- init.lua
vim.g.symbols_outline = {
highlight_hovered_item = true,
show_guides = true,
auto_preview = true,
position = 'right',
keymaps = {
close = "<Esc>",
goto_location = "<Cr>",
focus_location = "o",
hover_symbol = "<C-space>",
rename_symbol = "r",
code_actions = "a",
},
lsp_blacklist = {},
}
or
" init.vim
let g:symbols_outline = {
\ "highlight_hovered_item": v:true,
\ "show_guides": v:true,
\ "position": 'right',
\ "auto_preview": v:true,
\ "keymaps": {
\ "close": "<Esc>",
\ "goto_location": "<Cr>",
\ "focus_location": "o",
\ "hover_symbol": "<C-space>",
\ "rename_symbol": "r",
\ "code_actions": "a",
\ },
\ "lsp_blacklist": [],
\ }
Property | Description | Type | Default |
---|---|---|---|
highlight_hovered_item | Whether to highlight the currently hovered symbol (high cpu usage) | boolean | true |
show_guides | Wether to show outline guides | boolean | true |
position | Where to open the split window | 'right' or 'left' | 'right' |
auto_preview | Show a preview of the code on hover | boolean | true |
keymaps | Which keys do what | table (dictionary) | here |
lsp_blacklist | Which lsp clients to ignore | table (array) | {} |
Command | Description |
---|---|
:SymbolsOutline |
Toggle symbols outline |
:SymbolsOutlineOpen |
Open symbols outline |
:SymbolsOutlineClose |
Close symbols outline |
Key | Action |
---|---|
Escape | Close outline |
Enter | Go to symbol location in code |
o | Go to symbol location in code without losing focus |
Ctrl+Space | Hover current symbol |
r | Rename symbol |
a | Code actions |