Neovim: Difference between revisions
Included tree-sitter, improved text and code, removed clutter |
Marked this version for translation |
||
(11 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 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. | <languages/> | ||
<translate> | |||
<!--T:1--> | |||
[https://neovim.io/ Neovim]<ref>Neovim Team, "Home - Neovim", Neovim Official Website, N/A. https://neovim.io/</ref> is a highly extensible and open source text editor that aims to improve upon and modernize the popular [[Vim]]<ref>NixOS Wiki, Vim. https://wiki.nixos.org/wiki/Vim</ref> 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--> | ||
==== Using nix-shell ==== | ==== Using nix-shell ==== <!--T:4--> | ||
</translate> | |||
<syntaxhighlight lang="bash" start="3"> | <syntaxhighlight lang="bash" start="3"> | ||
nix-shell -p neovim | nix-shell -p neovim | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
==== Using Global Configuration ==== <!--T:5--> | |||
</translate> | |||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
pkgs.neovim | pkgs.neovim | ||
]; | ]; | ||
</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="bash"> | </syntaxhighlight> | ||
<translate> | |||
<!--T:37--> | |||
After modifying your configuration, apply the changes by running: | |||
</translate> | |||
<syntaxhighlight lang="bash"> | |||
sudo nixos-rebuild switch | sudo nixos-rebuild switch | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
==== Using Home Configuration ==== | ==== Using Home Configuration ==== <!--T:6--> | ||
</translate> | |||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
home.packages = [ | home.packages = [ | ||
pkgs.neovim | pkgs.neovim | ||
]; | ]; | ||
</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="bash"> | </syntaxhighlight> | ||
<translate> | |||
<!--T:38--> | |||
After updating your configuration, apply the changes by running: | |||
</translate> | |||
<syntaxhighlight lang="bash"> | |||
home-manager switch | home-manager switch | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
== Configuration == <!--T:7--> | |||
== | ==== Basic ==== <!--T:8--> | ||
</translate> | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
<translate> | |||
<!--T:39--> | |||
# Global Configuration | # Global Configuration | ||
</translate> | |||
programs.neovim = { | programs.neovim = { | ||
enable = true; | enable = true; | ||
Line 38: | Line 70: | ||
}; | }; | ||
<translate> | |||
<!--T:40--> | |||
# Home Configuration | # Home Configuration | ||
</translate> | |||
programs.neovim = { | programs.neovim = { | ||
enable = true; | enable = true; | ||
Line 46: | Line 81: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
==== Advanced ==== <!--T:10--> | |||
</translate> | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
<translate> | |||
<!--T:41--> | |||
# Global Configuration | # Global Configuration | ||
</translate> | |||
programs.neovim = { | programs.neovim = { | ||
enable = true; | enable = true; | ||
Line 71: | Line 112: | ||
}; | }; | ||
<translate> | |||
<!--T:42--> | |||
# 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: | ||
</translate> | |||
environment.variables.EDITOR = "nvim"; | environment.variables.EDITOR = "nvim"; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
== Tips and Tricks == | == Tips and Tricks == <!--T:12--> | ||
==== | ==== Location of Options ==== <!--T:13--> | ||
The | <!--T:43--> | ||
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]<ref>Nix Community, "Home Manager Option Search", Nix Community GitHub Pages, N/A. https://nix-community.github.io/home-manager/options.xhtml#opt-programs.neovim.enable</ref>. | |||
<!--T:14--> | |||
The global options are listed on [https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim MyNixOS]<ref>MyNixOS Team, "Search: nixpkgs/option/programs.neovim", MyNixOS, N/A. https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim</ref>. | |||
==== Package Variations ==== <!--T:15--> | |||
<!--T:44--> | |||
Have a look at the [https://github.com/nix-community/neovim-nightly-overlay Neovim Nightly Overlay]<ref>Nix Community, "neovim-nightly-overlay", GitHub, N/A. https://github.com/nix-community/neovim-nightly-overlay</ref> 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" | |||
==== | ==== Plugin Management ==== <!--T:21--> | ||
</translate> | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
plugins = [ | plugins = [ | ||
# Example Plugin: nvim-tree-lua | <translate> | ||
<!--T:49--> | |||
# Example Plugin: nvim-tree-lua | |||
</translate> | |||
pkgs.vimPlugins.nvim-tree-lua | pkgs.vimPlugins.nvim-tree-lua | ||
# Example Plugin: vim-startify with configuration | <translate> | ||
<!--T:50--> | |||
# Example Plugin: vim-startify with configuration | |||
</translate> | |||
{ | { | ||
plugin = pkgs.vimPlugins.vim-startify; | plugin = pkgs.vimPlugins.vim-startify; | ||
Line 110: | Line 162: | ||
} | } | ||
# Example Plugin: nvim-colorizer-lua with Lua config | <translate> | ||
<!--T:51--> | |||
# 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: | ||
</translate> | |||
{ | { | ||
plugin = pkgs.vimPlugins.nvim-colorizer-lua; | plugin = pkgs.vimPlugins.nvim-colorizer-lua; | ||
Line 119: | Line 174: | ||
lua << END | lua << END | ||
require 'colorizer'.setup { | require 'colorizer'.setup { | ||
'*'; -- Highlight all files, but customize some others. | '*';<translate> <!--T:52--> -- Highlight all files, but customize some others.</translate> | ||
'!vim'; -- Exclude vim from highlighting. | '!vim';<translate> <!--T:53--> -- Exclude vim from highlighting.</translate> | ||
} | } | ||
END | END | ||
Line 126: | Line 181: | ||
} | } | ||
# Example Plugin: nvim-treesitter with Lua config | <translate> | ||
<!--T:54--> | |||
# Example Plugin: nvim-treesitter with Lua config | |||
</translate> | |||
{ | { | ||
plugin = pkgs.vimPlugins.nvim-treesitter; | plugin = pkgs.vimPlugins.nvim-treesitter; | ||
Line 134: | Line 192: | ||
require'nvim-treesitter.configs'.setup { | require'nvim-treesitter.configs'.setup { | ||
highlight = { | highlight = { | ||
enable = true, -- false will disable the whole extension | enable = true, <translate><!--T:55--> -- false will disable the whole extension</translate> | ||
disable = {}, -- list of languages that will be disabled | disable = {}, <translate><!--T:56--> -- list of languages that will be disabled</translate> | ||
}, | }, | ||
incremental_selection = { | incremental_selection = { | ||
Line 163: | Line 221: | ||
} | } | ||
# Installing grammars for tree-sitter | <translate> | ||
<!--T:57--> | |||
# 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 170: | Line 230: | ||
# (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:58--> | ||
# 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 | ||
</translate> | |||
]; | ]; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
==== Frameworks ==== <!--T:18--> | |||
<!--T:45--> | |||
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]<ref>LazyVim Team, "LazyVim", LazyVim Official Website, N/A. https://www.lazyvim.org/</ref> | |||
<!--T:46--> | |||
* [https://astronvim.com/ AstroVim]<ref>AstroNvim Team, "AstroNvim", AstroNvim Official Website, N/A. https://astronvim.com/</ref> | |||
<!--T:47--> | |||
* [https://nvchad.com/ NVChad]<ref>NvChad Team, "NvChad", NvChad Official Website, N/A. https://nvchad.com/</ref> | |||
<!--T:48--> | |||
Another excellent option is [https://www.lunarvim.org/docs/installation LunarVim]<ref>LunarVim Team, "Installation", LunarVim Documentation, N/A. https://www.lunarvim.org/docs/installation</ref>. 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>. | |||
== | == Troubleshooting == <!--T:59--> | ||
== References == <!--T:27--> | |||
</translate> | |||
[[Category:Applications]] | [[Category:Applications]] | ||
[[Category:Text Editor]] | [[Category:Text Editor]] |