⚡ Smart und leistungsstarkes Kommentar -Plugin für Neovim ⚡

commentstring . Lesen Sie :h comment.commentstring// ) und Block ( /* */ ) Kommentare. ) Wiederholen Sie die Unterstützung für gcc , gbc und Freunde[count]gcc und [count]gbcgcw gc$ ) und UP-Down-Bewegungen ( gc2j gc4k )gci{ gbat ) -- add this to your lua/plugins.lua, lua/plugins/init.lua, or the file you keep your other plugins:
{
' numToStr/Comment.nvim ' ,
opts = {
-- add any options here
}
}
use {
' numToStr/Comment.nvim ' ,
config = function ()
require ( ' Comment ' ). setup ()
end
}Plug ' numToStr/Comment.nvim '
" Somewhere after plug#end()
lua require ( ' Comment ' ). setup () Comment.nvim bietet Hilfedokumente, auf die durch Ausführen zugegriffen werden kann :help comment-nvim
Zuerst müssen Sie die Methode setup() aufrufen, um die Standardzuordnungen zu erstellen.
HINWEIS - Wenn Sie mit Schlüsselbindungen ausgesetzt sind, aber kein Problem mit Problemen, versuchen Sie dies bitte
require ( ' Comment ' ). setup () lua << EOF
require ( ' Comment ' ). setup ()
EOF Im Folgenden finden Sie die Standardkonfiguration für das setup() . Wenn Sie überschreiben möchten, ändern Sie einfach die gewünschte Option, dann wird sie mit der Standardkonfiguration zusammengeführt. Lesen Sie :h comment.config für weitere Informationen.
{
--- Add a space b/w comment and the line
padding = true ,
--- Whether the cursor should stay at its position
sticky = true ,
--- Lines to be ignored while (un)comment
ignore = nil ,
--- LHS of toggle mappings in NORMAL mode
toggler = {
--- Line-comment toggle keymap
line = ' gcc ' ,
--- Block-comment toggle keymap
block = ' gbc ' ,
},
--- LHS of operator-pending mappings in NORMAL and VISUAL mode
opleader = {
--- Line-comment keymap
line = ' gc ' ,
--- Block-comment keymap
block = ' gb ' ,
},
--- LHS of extra mappings
extra = {
--- Add comment on the line above
above = ' gcO ' ,
--- Add comment on the line below
below = ' gco ' ,
--- Add comment at the end of line
eol = ' gcA ' ,
},
--- Enable keybindings
--- NOTE: If given `false` then the plugin won't create any mappings
mappings = {
--- Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
basic = true ,
--- Extra mapping; `gco`, `gcO`, `gcA`
extra = true ,
},
--- Function to call before (un)comment
pre_hook = nil ,
--- Function to call after (un)comment
post_hook = nil ,
} Wenn Sie setup() -Methode aufrufen, Comment.nvim legt einige grundlegende Zuordnungen ein, die im normalen und visuellen Modus verwendet werden können, damit Sie mit dem Vergnügen beginnen, Dinge herauszuholen.
Diese Zuordnungen sind standardmäßig aktiviert. (Konfiguration: mappings.basic )
`gcc` - Toggles the current line using linewise comment
`gbc` - Toggles the current line using blockwise comment
`[ count ]gcc` - Toggles the number of line given as a prefix-count using linewise
`[ count ]gbc` - Toggles the number of line given as a prefix-count using blockwise
`gc[ count ]{motion}` - (Op-pending) Toggles the region using linewise comment
`gb[ count ]{motion}` - (Op-pending) Toggles the region using blockwise comment `gc` - Toggles the region using linewise comment
`gb` - Toggles the region using blockwise comment Diese Zuordnungen sind standardmäßig aktiviert. (Konfiguration: mappings.extra )
`gco` - Insert comment to the next line and enters INSERT mode
`gcO` - Insert comment to the previous line and enters INSERT mode
`gcA` - Insert comment to end of the current line and enters INSERT mode# Linewise
`gcw` - Toggle from the current cursor position to the next word
`gc $ ` - Toggle from the current cursor position to the end of line
`gc}` - Toggle until the next blank line
`gc5j` - Toggle 5 lines after the current cursor position
`gc8k` - Toggle 8 lines before the current cursor position
`gcip` - Toggle inside of paragraph
`gca}` - Toggle around curly brackets
# Blockwise
`gb2}` - Toggle until the 2 next blank line
`gbaf` - Toggle comment around a function (w/ LSP/treesitter support)
`gbac` - Toggle comment around a class (w/ LSP/treesitter support) Dieses Plugin bietet native Unterstützung für Treesitter für die Berechnung commentstring , die für mehrere (injizierte/eingebettete) Sprachen wie Vue oder Markdown funktioniert. Aufgrund der Art des analysierten Baumes hat diese Implementierung jedoch einige bekannte Einschränkungen.
jsx/tsx -Unterstützung. Die Umsetzung war ziemlich kompliziert. Verwenden Sie bei Vorwach-Anwendungsfällen die NVIM-TS-Kontext-CommentString. Siehe Abschnitt pre_hook für die Integration.
HINWEIS -Dieses Plugin hängt nicht von NVIM-Treesititter ab. Es wird jedoch empfohlen, um die Parsers der Baumstitter einfach zu installieren.
Es gibt zwei Hook -Methoden, dh pre_hook und post_hook die vor Kommentar bzw. nach einem Kommentar aufgerufen werden. Beide sollten während setup() bereitgestellt werden.
pre_hook - Mit einem ctx -Argument (lesen Sie :h comment.utils.CommentCtx ) vor (UN) Kommentar angerufen. Kann optional eine commentstring zurückgeben, die für (UN) -Kommentar verwendet werden soll. {
pre_hook = function ( ctx )
if ctx . range . srow == ctx . range . erow then
-- do something with the current line
else
-- do something with lines range
end
end ,
} Sie können auch NVIM-TS-Context-CommentString mit pre_hook integrieren, um tsx/jsx Dateien einfach zu kommentieren.
Hinweis -
Comment.nvimunterstützttreesitterbereits aus dem Box für alle Sprachen mit Ausnahme vontsx/jsx.
{
pre_hook = require ( ' ts_context_commentstring.integrations.comment_nvim ' ). create_pre_hook (),
}post_hook - Diese Methode wird nach (UN) Kommentar aufgerufen. Es empfängt das :h comment.utils.CommentCtx ctx -Argument wie pre_hook . {
post_hook = function ( ctx )
if ctx . range . srow == ctx . range . erow then
-- do something with the current line
else
-- do something with lines range
end
end ,
} Der post_hook kann implementiert werden, um einige Nischen -Anwendungsfälle wie die folgenden zu decken:
#if 0 . Sehen Sie hier ein Beispiel.pre_hook ) und verschieben Sie den Cursor auf den nächsten Block (mit post_hook ). Sehen Sie sich das an.HINWEIS: Wenn Sie
gc,gbund Freunde drücken, wirdcmode(Kommentarmodus) inpre_hookimmer umgeschaltet, da wir in diesem Moment nicht wissen, obgcodergbdie Zeilen kommentieren oder in Übereinstimmung mit dem Kommentar oder in Übereinstimmung. Aber zum Glück wissen wir das vorpost_hook, und dies wird immer entweder einen Kommentar oder einen Unterfassungsstatus erhalten
Sie können ignore verwenden, um bestimmte Zeilen während des Kommentars/der Überzeugung zu ignorieren. Es kann die Lua Regex -String oder eine Funktion benötigen, die eine Regex -Zeichenfolge zurückgibt und während setup() bereitgestellt werden sollte.
HINWEIS: Ignorieren Sie nur dann, wenn Sie einen Linienkommentar für Linien haben. Dies ist aus Design. Da das Ignorieren von Zeilen in Block -Kommentaren nicht so viel Sinn macht.
string -- ignores empty lines
ignore = ' ^$ '
-- ignores line that starts with `local` (excluding any leading whitespace)
ignore = ' ^(%s*)local '
-- ignores any lines similar to arrow function
ignore = ' ^const(.*)=(%s?)%((.*)%)(%s?)=> 'function {
ignore = function ()
-- Only ignore empty lines for lua files
if vim . bo . filetype == ' lua ' then
return ' ^$ '
end
end ,
} Die meisten Sprachen/Filetypen unterstützen native Unterstützung für Kommentare über commentstring aber es könnte einen Filetyp geben, der nicht unterstützt wird. Es gibt zwei Möglichkeiten, um Kommentare für nicht unterstützte Filetypen zu ermöglichen:
commentstring für diesen bestimmten Filetyp wie folgt einstellen. Lesen Sie :h commentstring für weitere Informationen. vim . bo . commentstring = ' //%s '
-- or
vim . api . nvim_command ( ' set commentstring=//%s ' )commentstring behandeln. Lesen Sie :h comment.ft für weitere Informationen. local ft = require ( ' Comment.ft ' )
-- 1. Using set function
ft
-- Set only line comment
. set ( ' yaml ' , ' #%s ' )
-- Or set both line and block commentstring
. set ( ' javascript ' , { ' //%s ' , ' /*%s*/ ' })
-- 2. Metatable magic
ft . javascript = { ' //%s ' , ' /*%s*/ ' }
ft . yaml = ' #%s '
-- Multiple filetypes
ft ({ ' go ' , ' rust ' }, ft . get ( ' c ' ))
ft ({ ' toml ' , ' graphql ' }, ' #%s ' )PRs (s) sind herzlich eingeladen, weitere Kommentare im Plugin hinzuzufügen
Es gibt mehrere Möglichkeiten, Melde-/Fixierfehler und Feature -Anfragen beizutragen. Sie können auch Kommentare an dieses Plugin einreichen, indem Sie ft.lua aktualisieren und PR senden.
/**%s*/ (js), ///%s (rost) ---- ------------------
-- This is a header --
---- ------------------