Neovim: Difference between revisions

Layer-09 (talk | contribs)
Included more information on LunarVim
Unabomberlive (talk | contribs)
Marked this version for translation
 
(9 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-->


==== Using Global Configuration ====
</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-->


== Configuration ==
==== Basic ==== <!--T:8-->


==== Basic ====
</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-->


==== Advanced ====
</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 Option ====
==== Location of Options ==== <!--T:13-->
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 global options are listed on [https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim MyNixOS].  
<!--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>.


==== Neovim Nightly ====
<!--T:14-->
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.
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>.  


You can run the master version via the following command:
==== Package Variations ==== <!--T:15-->


nix run "github:nix-community/neovim-nightly-overlay"
<!--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.


==== Pre-Configured Configurations ====
<!--T:16-->
If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them:  
You can run the master version via the following command:


* [https://www.lazyvim.org/ LazyVim]
<!--T:17-->
* [https://astronvim.com/ AstroVim]
nix run "github:nix-community/neovim-nightly-overlay"
* [https://nvchad.com/ NVChad]
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.


The configuration for LunarVim is stored in <code>./config/lvim</code>.
==== Plugin Management ==== <!--T:21-->


==== Plugin Management ====
</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 112: 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 121: 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 128: 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 136: 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 165: 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 172: 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-->


== References ==
<!--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:


# https://neovim.io/
<!--T:19-->
# https://github.com/neovim/neovim
* [https://www.lazyvim.org/ LazyVim]<ref>LazyVim Team, "LazyVim", LazyVim Official Website, N/A. https://www.lazyvim.org/</ref>
# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.neovim.enable
 
# https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim
<!--T:46-->
# https://github.com/m15a/flake-awesome-neovim-plugins
* [https://astronvim.com/ AstroVim]<ref>AstroNvim Team, "AstroNvim", AstroNvim Official Website, N/A. https://astronvim.com/</ref>
# https://github.com/NixNeovim/NixNeovimPlugins
 
# https://www.lazyvim.org/
<!--T:47-->
# https://astronvim.com/
* [https://nvchad.com/ NVChad]<ref>NvChad Team, "NvChad", NvChad Official Website, N/A. https://nvchad.com/</ref>
# https://nvchad.com/
 
# [[LunarVim]]
<!--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]]