Neovim: Difference between revisions

Duob (talk | contribs)
No edit summary
Duob (talk | contribs)
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