Neovim: Difference between revisions
No edit summary |
Marked this version for translation |
||
| Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
<translate> | <translate> | ||
<!--T:1--> | |||
[https://neovim.io/ Neovim] is a highly extensible and open source text editor that aims to improve upon and modernize the popular [[Vim]] editor. It's designed to be a drop-in replacement for Vim, maintaining compatibility with most Vim plugins and configurations while offering additional features and improvements. Neovim focuses on extensibility, usability, and performance. | [https://neovim.io/ Neovim] is a highly extensible and open source text editor that aims to improve upon and modernize the popular [[Vim]] editor. It's designed to be a drop-in replacement for Vim, maintaining compatibility with most Vim plugins and configurations while offering additional features and improvements. Neovim focuses on extensibility, usability, and performance. | ||
<!--T:2--> | |||
It introduces a powerful plugin architecture that allows for asynchronous plugin execution, which can significantly improve performance for certain operations. It also includes a built-in terminal emulator, allowing users to run shell commands directly within the editor. The project emphasizes code quality and maintainability, with a clean, well-documented codebase that makes it easier for developers to contribute. | It introduces a powerful plugin architecture that allows for asynchronous plugin execution, which can significantly improve performance for certain operations. It also includes a built-in terminal emulator, allowing users to run shell commands directly within the editor. The project emphasizes code quality and maintainability, with a clean, well-documented codebase that makes it easier for developers to contribute. | ||
== Installation == | == Installation == <!--T:3--> | ||
<!--T:4--> | |||
==== Using nix-shell ==== | ==== Using nix-shell ==== | ||
<syntaxhighlight lang="bash" start="3"> | <syntaxhighlight lang="bash" start="3"> | ||
| Line 12: | Line 15: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:5--> | |||
==== Using Global Configuration ==== | ==== Using Global Configuration ==== | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
| Line 21: | Line 25: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:6--> | |||
==== Using Home Configuration ==== | ==== Using Home Configuration ==== | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
| Line 30: | Line 35: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Configuration == | == Configuration == <!--T:7--> | ||
<!--T:8--> | |||
==== Basic ==== | ==== Basic ==== | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 40: | Line 46: | ||
}; | }; | ||
<!--T:9--> | |||
# Home Configuration | # Home Configuration | ||
programs.neovim = { | programs.neovim = { | ||
| Line 49: | Line 56: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:10--> | |||
==== Advanced ==== | ==== Advanced ==== | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 73: | Line 81: | ||
}; | }; | ||
<!--T:11--> | |||
# Home Configuration | # Home Configuration | ||
# You have to add the line below to set it as the default editor: | # You have to add the line below to set it as the default editor: | ||
| Line 78: | Line 87: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Tips and Tricks == | == Tips and Tricks == <!--T:12--> | ||
<!--T:13--> | |||
==== Location of Options ==== | ==== Location of Options ==== | ||
The home manager options are defined in the following [https://nix-community.github.io/home-manager/options.xhtml#opt-programs.neovim.enable Home Manager Options Manual]. | The home manager options are defined in the following [https://nix-community.github.io/home-manager/options.xhtml#opt-programs.neovim.enable Home Manager Options Manual]. | ||
<!--T:14--> | |||
The global options are listed on [https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim MyNixOS]. | The global options are listed on [https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim MyNixOS]. | ||
<!--T:15--> | |||
==== Neovim Nightly ==== | ==== Neovim Nightly ==== | ||
Have a look at the [https://github.com/nix-community/neovim-nightly-overlay Neovim Nightly Overlay] to install the most recent current nightly version of Neovim. | Have a look at the [https://github.com/nix-community/neovim-nightly-overlay Neovim Nightly Overlay] to install the most recent current nightly version of Neovim. | ||
<!--T:16--> | |||
You can run the master version via the following command: | You can run the master version via the following command: | ||
nix run "github:nix-community/neovim-nightly-overlay" | <!--T:17--> | ||
nix run "github:nix-community/neovim-nightly-overlay" | |||
<!--T:18--> | |||
==== Pre-Configured Configurations ==== | ==== Pre-Configured Configurations ==== | ||
If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them: | If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them: | ||
<!--T:19--> | |||
* [https://www.lazyvim.org/ LazyVim] | * [https://www.lazyvim.org/ LazyVim] | ||
* [https://astronvim.com/ AstroVim] | * [https://astronvim.com/ AstroVim] | ||
| Line 100: | Line 116: | ||
Another excellent option is [https://www.lunarvim.org/docs/installation LunarVim]. The development community describes it as "an IDE layer for Neovim with sane defaults." LunarVim includes an installer/updater for LSP modules and other features. It can be installed via the <code>lunarvim</code> package from <code>nixpkgs</code> and is started with the <code>lvim</code> command. | Another excellent option is [https://www.lunarvim.org/docs/installation LunarVim]. The development community describes it as "an IDE layer for Neovim with sane defaults." LunarVim includes an installer/updater for LSP modules and other features. It can be installed via the <code>lunarvim</code> package from <code>nixpkgs</code> and is started with the <code>lvim</code> command. | ||
<!--T:20--> | |||
The configuration for LunarVim is stored in <code>./config/lvim</code>. | The configuration for LunarVim is stored in <code>./config/lvim</code>. | ||
<!--T:21--> | |||
==== Plugin Management ==== | ==== Plugin Management ==== | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 108: | Line 126: | ||
pkgs.vimPlugins.nvim-tree-lua | pkgs.vimPlugins.nvim-tree-lua | ||
# Example Plugin: vim-startify with configuration | <!--T:22--> | ||
# Example Plugin: vim-startify with configuration | |||
{ | { | ||
plugin = pkgs.vimPlugins.vim-startify; | plugin = pkgs.vimPlugins.vim-startify; | ||
| Line 114: | Line 133: | ||
} | } | ||
# Example Plugin: nvim-colorizer-lua with Lua config | <!--T:23--> | ||
# Example Plugin: nvim-colorizer-lua with Lua config | |||
# Due to how the runtimepath for Lua modules is processed, your configuration may require | # Due to how the runtimepath for Lua modules is processed, your configuration may require | ||
# packadd! plugin-name to require a module. A home-manager example: | # packadd! plugin-name to require a module. A home-manager example: | ||
| Line 130: | Line 150: | ||
} | } | ||
# Example Plugin: nvim-treesitter with Lua config | <!--T:24--> | ||
# Example Plugin: nvim-treesitter with Lua config | |||
{ | { | ||
plugin = pkgs.vimPlugins.nvim-treesitter; | plugin = pkgs.vimPlugins.nvim-treesitter; | ||
| Line 167: | Line 188: | ||
} | } | ||
# Installing grammars for tree-sitter | <!--T:25--> | ||
# Installing grammars for tree-sitter | |||
# Option 1: Install all grammar packages | # Option 1: Install all grammar packages | ||
pkgs.vimPlugins.nvim-treesitter.withAllGrammars | pkgs.vimPlugins.nvim-treesitter.withAllGrammars | ||
| Line 174: | Line 196: | ||
# (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ])) | # (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ])) | ||
# Option 3: Installing grammars without Nix | <!--T:26--> | ||
# Option 3: Installing grammars without Nix | |||
# Installing grammar packages through the built-in command can lead to errors. | # Installing grammar packages through the built-in command can lead to errors. | ||
# The following Neovim command will install syntax highlighting for the C programming language: :TSInstall c | # The following Neovim command will install syntax highlighting for the C programming language: :TSInstall c | ||
| Line 180: | Line 203: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== References == | == References == <!--T:27--> | ||
<!--T:28--> | |||
# https://neovim.io/ | # https://neovim.io/ | ||
# https://github.com/neovim/neovim | # https://github.com/neovim/neovim | ||