Benötigt Neovim 0,7+
Installieren Sie dieses Plugin mit einem Plugin/Paket -Manager oder sehen Sie sich :h packages
Richten Sie wie gewohnt über lspconfig/vim.lsp.start über lspconfig/vim.lsp.start ein. Sie müssen nicht anrufen require("clangd_extensions").setup wenn Ihnen die Standardeinstellungen gefallen:
require ( " clangd_extensions " ). setup ({
inlay_hints = {
inline = vim . fn . has ( " nvim-0.10 " ) == 1 ,
-- Options other than `highlight' and `priority' only work
-- if `inline' is disabled
-- Only show inlay hints for the current line
only_current_line = false ,
-- Event which triggers a refresh of the inlay hints.
-- You can make this { "CursorMoved" } or { "CursorMoved,CursorMovedI" } but
-- note that this may cause higher CPU usage.
-- This option is only respected when only_current_line is true.
only_current_line_autocmd = { " CursorHold " },
-- whether to show parameter hints with the inlay hints or not
show_parameter_hints = true ,
-- prefix for parameter hints
parameter_hints_prefix = " <- " ,
-- prefix for all the other hints (type, chaining)
other_hints_prefix = " => " ,
-- whether to align to the length of the longest line in the file
max_len_align = false ,
-- padding from the left if max_len_align is true
max_len_align_padding = 1 ,
-- whether to align to the extreme right or not
right_align = false ,
-- padding from the right if right_align is true
right_align_padding = 7 ,
-- The color of the hints
highlight = " Comment " ,
-- The highlight group priority for extmark
priority = 100 ,
},
ast = {
-- These are unicode, should be available in any font
role_icons = {
type = " ? " ,
declaration = " ? " ,
expression = " ? " ,
statement = " ; " ,
specifier = " ? " ,
[ " template argument " ] = " ? " ,
},
kind_icons = {
Compound = " ? " ,
Recovery = " ? " ,
TranslationUnit = " ? " ,
PackExpansion = " ? " ,
TemplateTypeParm = " ? " ,
TemplateTemplateParm = " ? " ,
TemplateParamObject = " ? " ,
},
--[[ These require codicons (https://github.com/microsoft/vscode-codicons)
role_icons = {
type = "",
declaration = "",
expression = "",
specifier = "",
statement = "",
["template argument"] = "",
},
kind_icons = {
Compound = "",
Recovery = "",
TranslationUnit = "",
PackExpansion = "",
TemplateTypeParm = "",
TemplateTemplateParm = "",
TemplateParamObject = "",
}, ]]
highlights = {
detail = " Comment " ,
},
},
memory_usage = {
border = " none " ,
},
symbol_info = {
border = " none " ,
},
}) :ClangdSwitchSourceHeader

Fügen Sie dies zu Ihrem NVIM-LSPCONFIG / vim.lsp.start() von on_attach :
require ( " clangd_extensions.inlay_hints " ). setup_autocmd ()
require ( " clangd_extensions.inlay_hints " ). set_inlay_hints () Sie können die Hinweise auch mit ClangdSetInlayHints , ClangdDisableInlayHints und ClangdToggleInlayHints aktivieren, deaktivieren oder umschalten. Das Umschalten gibt den aktuellen Status der Hinweise zurück. Dies ist nützlich, wenn Sie einen Rückruf anschließen möchten, wenn Sie Inlay -Hinweise umschalten:
if require ( " clangd_extensions.inlay_hints " ). toggle_inlay_hints () then
-- Inlay hints are enabled
else
-- Inlay hints are disabled
endWenn Sie beispielsweise Autokommandos mit Clangd -Inlay -Hinweisen haben, möchten Sie diese möglicherweise deaktivieren/aktivieren, wenn Inlay -Hinweise umgeschaltet werden:
on_attach = function ( _ , buf )
local group = vim . api . nvim_create_augroup ( " clangd_no_inlay_hints_in_insert " , { clear = true })
vim . keymap . set ( " n " , " <leader>lh " , function ()
if require ( " clangd_extensions.inlay_hints " ). toggle_inlay_hints () then
vim . api . nvim_create_autocmd ( " InsertEnter " , { group = group , buffer = buf ,
callback = require ( " clangd_extensions.inlay_hints " ). disable_inlay_hints
})
vim . api . nvim_create_autocmd ({ " TextChanged " , " InsertLeave " }, { group = group , buffer = buf ,
callback = require ( " clangd_extensions.inlay_hints " ). set_inlay_hints
})
else
vim . api . nvim_clear_autocmds ({ group = group , buffer = buf })
end
end , { buffer = buf , desc = " [l]sp [h]ints toggle " })
end ,
}
Sie können Knoten mit zc und Freunden falten - das AST -Fenster verfügt über shiftwidth=2 und foldmethod=indent .
:ClangdAST um den AST mit der aktuellen Zeile als Bereich anzuzeigen :'<,'>ClangdAST mit einer visuellen Auswahl, um den AST mit den ausgewählten Zeilen als Bereich anzuzeigen. Sehen Sie, wie die Bereiche unter https://clangd.llvm.org/extensions#ast behandelt werden
Verwendung: Für NVIM-CMP
local cmp = require " cmp "
cmp . setup {
-- ... rest of your cmp setup ...
sorting = {
comparators = {
cmp . config . compare . offset ,
cmp . config . compare . exact ,
cmp . config . compare . recently_used ,
require ( " clangd_extensions.cmp_scores " ),
cmp . config . compare . kind ,
cmp . config . compare . sort_text ,
cmp . config . compare . length ,
cmp . config . compare . order ,
},
},
}
:ClangdSymbolInfo mit dem Cursor am gewünschten Symbol.

:ClangdTypeHierarchy mit dem Cursor über dem gewünschten Typ oder einem Symbol dieses Typs. gd mit dem Cursor über einen Typ in einem Fenster, um zu seiner Definition zu gehen.
Sie können Elemente mit zc und Freunden falten - das Speicherverbrauchsfenster verfügt über shiftwidth=2 und foldmethod=indent . 
:ClangdMemoryUsage . Präambel kann groß sein, sodass sie standardmäßig zusammengebrochen ist, um die Verwendung zu erweitern :ClangdMemoryUsage expand_preamble
☑️ Gedächtnisnutzung
☑️ Ast
☑️ Symbol Info Anfrage
☑️ Geben Sie Hierarchie an
☑️ Inlay Hinweise
☑️ Wechseln Sie zwischen Quelle/Header
☑️ Dateistatus (siehe lsp-status.nvim)
☑️ Compilation -Befehle (kann in vim.lsp.start() /lspconfig init_options und settings angegeben werden)
☑️ Code -Abschlusswerte
⬜ Erzeugung der Diagnostik (nicht sicher)
SIMRAT39 - Der Code für Inlay -Hinweise wurde von Rust -Tools.nvim mit sehr geringfügigen Änderungen entnommen.