Eine minimale Neovim-Konfiguration, geschrieben in Lua
Inhaltsverzeichnis
Neovim ist ein ziemlich cooler Nachfolger von Vim, der sich auf Kompatibilität konzentriert, gleichzeitig asynchrone Plugin-Funktionalität hinzufügt und versucht, die Codebasis zu bereinigen. Nachdem ich schon mehrfach genug von Sublime Text (2 und 3) und Atom hatte und erkannte, wie viel ich über SSH entwickle, schien es sinnvoll, die Verwendung von vim (oder in diesem Fall nvim) als meine IDE auszuprobieren. Die Vorteile laufen im Wesentlichen auf Folgendes hinaus:
Deshalb habe ich beschlossen, dieses Repository zu erstellen. Es gibt mehrere Versionen, schauen Sie sich CHANGELOG an.
Diese Konfiguration ist als Ausgangspunkt gedacht und entspricht nur meinen Anforderungen. Wenn Sie es anpassen möchten, fahren Sie mit 6. Anpassung fort.
mv ~ /.config/nvim ~ /.config/nvim.bak
Betriebssystem | WEG |
---|---|
Linux, MacOS | $XDG_CONFIG_HOME/nvim , ~/.config/nvim |
Windows (cmd) | %localappdata%nvim |
Windows (Powershell) | $env:LOCALAPPDATAnvim |
HINWEIS Die URL Ihres Forks sieht etwa so aus:
https://github.com/<your_github_username>/neovim-config.git
HINWEIS Wenn Sie den oben empfohlenen Schritt befolgen (z. B. das Repo forken), ersetzen Sie
ntk148v
in den folgenden Befehlen durch<your_github_username>
git clone https://github.com/ntk148v/neovim-config.git " ${XDG_CONFIG_HOME :- $HOME / .config} " /nvim
Wenn Sie cmd.exe
verwenden:
git clone https://github.com/ntk148v/neovim-config.git " %localappdata%nvim "
Wenn Sie powershell.exe
verwenden
git clone https://github.com/ntk148v/neovim-config.git " ${env : LOCALAPPDATA} nvim "
nvim
git pull
auf dem Laufenden bleiben. Die Dateien unter „config“ werden zum richtigen Zeitpunkt automatisch geladen, sodass Sie diese Dateien nicht manuell benötigen.
tree ~ /.config/nvim
├── init.lua
├── lazy-lock.json
└── lua
├── autocmds.lua
├── custom.lua
├── mappings.lua
├── options.lua
├── plugins
│ ├── configs
│ │ ├── cmp.lua
│ │ ├── gitsigns.lua
│ │ ├── lspconfig.lua
│ │ ├── lualine.lua
│ │ ├── luasnip.lua
│ │ ├── mason.lua
│ │ ├── null-ls.lua
│ │ ├── telescope.lua
│ │ ├── tree.lua
│ │ └── treesitter.lua
│ └── init.lua
└── sample_custom.lua
Plugin | Beschreibung |
---|---|
lazy.nvim | Ein moderner Plugin-Manager für Neovim |
mason.nvim | Tragbarer Paketmanager für Neovim, der überall läuft, wo Neovim läuft. Einfache Installation und Verwaltung von LSP-Servern, DAP-Servern, Linters und Formatierern. |
nvim-lspconfig | Eine Sammlung gängiger Konfigurationen für den integrierten Sprachserver-Client von Neovim |
Gitsigns | Superschnelle Git-Dekorationen, rein in Lua/Teal implementiert |
nvim-treesitter | Nvim Treesitter-Konfigurationen und Abstraktionsschicht |
nvim-cmp | Autovervollständigungs-Plugin |
LuaSnip | Snippet Engine für Neovim, geschrieben in Lua |
nvim-tree.lua - | Ein in Lua geschriebener Datei-Explorer |
nvim-autopairs | Ein superstarkes Autopaar für Neovim |
nvim-web-devicons | Lua- fork von vim-web-devicons für neovim |
lualine.nvim | Ein blitzschnelles und einfach zu konfigurierendes Neovim-Statusline-Plugin, geschrieben in reinem Lua. |
norcalli/nvim-colorizer.lua | Der schnellste Neovim-Kolorierer. |
nvim-telescope/telescope.nvim | Suchen, Filtern, Vorschau, Auswählen. Alles Lua, die ganze Zeit. |
Rosé-Kiefer | Soho-Stimmung für Neovim |
nvimtools/none-ls.nvim | null-ls.nvim reloaded / Verwenden Sie Neovim als Sprachserver, um LSP-Diagnosen, Codeaktionen und mehr über Lua einzuschleusen. |
folke/which-key.nvim | Erstellen Sie Tastenkombinationen, die haften bleiben. WhichKey hilft Ihnen, sich Ihre Neovim-Tastaturbelegungen zu merken, indem es während der Eingabe verfügbare Tastenkombinationen in einem Popup anzeigt. |
Standardmäßig sind die folgenden LSP-Server installiert und konfiguriert:
Darüber hinaus lässt es sich in nvim-treesitter integrieren, um eine umfassende Syntaxhervorhebung und andere Sprachanalyse-Magie bereitzustellen.
Wenn Ihre Sprache nicht unterstützt wird, gehen Sie bitte wie folgt vor:
:LspInstall ` <your_language_server> `
:TSInstall ` <language_to_install> `
Sie können weitere LSP-Server und Sprachsyntaxhervorhebung hinzufügen, indem Sie die benutzerdefinierte Datei bearbeiten.
Dies sind die Standard-Tastaturbelegungen. In den folgenden Tastenkombinationen ist die Taste <leader>
+` auf das Zeichen (Leerzeichen) eingestellt. Überprüfen Sie: keymaps.lua.
Abkürzung | Modus | Beschreibung |
---|---|---|
kkk | Einfügen | Esc mit kk |
<leader> + r | Normal | Konfigurationsdatei neu laden |
<leader> + s | Normal | Datei speichern |
<leader> + q | Normal | Speichern (alle Fenster schließen) und Neovim verlassen |
<leader> + n | Normal | Öffnen Sie NvimTree |
<leader> + Nr | Normal | Aktualisieren Sie NvimTree |
<leader> + nf | Normal | Suchen Sie die Datei in NvimTree |
<leader> + ff | Normal | Öffnen Sie Telescope, um Dateien zu finden |
<leader> + fg | Normal | Öffnen Sie Telescope, um Live-Grep durchzuführen |
<leader> + fb | Normal | Öffnen Sie Telescope, um Puffer aufzulisten |
<leader> + fh | Normal | Öffnen Sie Telescope, um Hilfe anzuzeigen |
<leader> + fo | Normal | Öffnen Sie Telescope, um die zuletzt geöffneten Dateien anzuzeigen |
<leader> + cm | Normal | Öffnen Sie Telescope, um Git-Commits aufzulisten |
<leader> + ws/j/k/l | Normal | Bewegen Sie sich um Spagat |
mm | Normal | Kommentar-/Kommentarzeile entfernen |
Es gibt viele Standard-Keymaps. Sie können dies mit dem Befehl :map
überprüfen. Es gibt auch andere Varianten:
:nmap
für Normalmodus-Zuordnungen:vmap
für visuelle Moduszuordnungen:imap
für Einfügemoduszuordnungen Die obige Liste ist nicht vollständig. Wenn Sie :help map
in Vim eingeben, erhalten Sie weitere Informationen.
Sie können diese Konfiguration anpassen, indem Sie das custom
Modul erstellen. Sie können zwischen zwei Möglichkeiten wählen:
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom.lua
.${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom/
wenn Ihre benutzerdefinierte Konfiguration zu lang ist und Sie sie in mehrere Dateien aufteilen möchten.Schauen Sie sich die benutzerdefinierte Beispieldatei als Ausgangspunkt an. Die Logik stammt von CyberNvim. Es gibt eine Reihe definierter Abschnitte in der Konfiguration:
M.setup_sources
wird verwendet, um zusätzliche Quellen hinzuzufügen, um eine Verbindung zu Null-ls herzustellen – eine Liste der Quellen finden Sie hier. Der Parameter b ist nur die Abkürzung für null_ls.builtins.M.ensure_installed
wird verwendet, um zusätzlichen Treesitter-Textmarker hinzuzufügen.M.plugins
fügen Sie Ihre eigenen Plugin-Definitionen hinzu.M.configs
ist der wichtigste Abschnitt Ihrer eigenen Konfiguration. Hier können Sie beliebige Autobefehle definieren, beliebige Dateien anfordern oder Ihre aktuelle Konfiguration auf andere Weise vollständig portieren.M.formatting_servers
wird zum Einrichten automatischer Formatierungsregeln verwendet. Sie müssen den Sprachserver auswählen, der automatische Formatierungsfunktionen bereitstellt Melden Sie gerne ein Problem oder öffnen Sie eine Pull-Anfrage. Gern geschehen!