Neovim/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "# Пример Плагина: nvim-tree-lua"
Unabomberlive (talk | contribs)
Created page with "== Решение проблем =="
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
[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]<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.
</div>
</div>


Line 25: Line 25:
</syntaxhighlight>
</syntaxhighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
После изменения конфигурации примените изменения, выполнив:
After modifying your configuration, apply the changes by running:
</div>


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 33: Line 31:
</syntaxhighlight>
</syntaxhighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Using_Home_Configuration"></span>
==== Using Home Configuration ====
==== Используя Home-Manager ====
</div>


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
Line 43: Line 40:
</syntaxhighlight>
</syntaxhighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
После обновления конфигурации примените изменения, выполнив:
After updating your configuration, apply the changes by running:
</div>


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 58: Line 53:


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
<div lang="en" dir="ltr" class="mw-content-ltr">
# Глобально
# Global Configuration
</div>
programs.neovim = {
programs.neovim = {
   enable = true;
   enable = true;
Line 66: Line 59:
};
};


<div lang="en" dir="ltr" class="mw-content-ltr">
# Для одного пользователя
# Home Configuration
</div>
programs.neovim = {
programs.neovim = {
   enable = true;
   enable = true;
Line 81: Line 72:


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
<div lang="en" dir="ltr" class="mw-content-ltr">
# Глобально
# Global Configuration
</div>
programs.neovim = {
programs.neovim = {
   enable = true;
   enable = true;
Line 105: Line 94:
};
};


<div lang="en" dir="ltr" class="mw-content-ltr">
# Для одного пользователя
# Home Configuration
# Вам нужно добавить строку ниже, чтобы установить его в качестве редактора по умолчанию:
# You have to add the line below to set it as the default editor:
</div>
environment.variables.EDITOR = "nvim";
environment.variables.EDITOR = "nvim";
</syntaxhighlight>
</syntaxhighlight>
Line 115: Line 102:
== Советы и рекомендации ==
== Советы и рекомендации ==


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Location_of_Options"></span>
==== Location of Options ====
==== Расположение Опций ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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]<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>.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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]<ref>MyNixOS Team, "Search: nixpkgs/option/programs.neovim", MyNixOS, N/A. https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim</ref>.
</div>  
</div>  


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Package_Variations"></span>
==== Neovim Nightly ====
==== Варианты Пакета ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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]<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.
</div>
</div>


Line 141: Line 126:
  nix run "github:nix-community/neovim-nightly-overlay"
  nix run "github:nix-community/neovim-nightly-overlay"


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Plugin_Management"></span>
==== Pre-Configured Configurations ====
==== Управление Плагинами ====
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them:
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://www.lazyvim.org/ LazyVim]
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://astronvim.com/ AstroVim]
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://nvchad.com/ NVChad]
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
</div>
 
Конфигурация LunarVim хранится в <code>~/.config/lvim</code>.
 
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Plugin Management ====
</div>


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
Line 202: Line 160:
   }
   }


   <div lang="en" dir="ltr" class="mw-content-ltr">
   # Пример плагина: nvim-treesitter с конфигурацией на языке Lua
# Example Plugin: nvim-treesitter with Lua config
</div>
   {
   {
     plugin = pkgs.vimPlugins.nvim-treesitter;
     plugin = pkgs.vimPlugins.nvim-treesitter;
Line 213: Line 169:
           highlight = {
           highlight = {
             enable = true,              <span lang="en" dir="ltr" class="mw-content-ltr">-- false will disable the whole extension</span>
             enable = true,              <span lang="en" dir="ltr" class="mw-content-ltr">-- false will disable the whole extension</span>
             disable = {},              <span lang="en" dir="ltr" class="mw-content-ltr">-- list of languages that will be disabled</span>
             disable = {},              -- список языков, которые будут отключены
           },
           },
           incremental_selection = {
           incremental_selection = {
Line 257: Line 213:
];
];
</syntaxhighlight>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Frameworks ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them:
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://www.lazyvim.org/ LazyVim]<ref>LazyVim Team, "LazyVim", LazyVim Official Website, N/A. https://www.lazyvim.org/</ref>
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://astronvim.com/ AstroVim]<ref>AstroNvim Team, "AstroNvim", AstroNvim Official Website, N/A. https://astronvim.com/</ref>
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://nvchad.com/ NVChad]<ref>NvChad Team, "NvChad", NvChad Official Website, N/A. https://nvchad.com/</ref>
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
</div>
Конфигурация LunarVim хранится в <code>~/.config/lvim</code>.
<span id="Troubleshooting"></span>
== Решение проблем ==


<span id="References"></span>
<span id="References"></span>
== Ссылки ==
== Ссылки ==


# https://neovim.io/
# https://github.com/neovim/neovim
# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.neovim.enable
# https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim
# https://github.com/m15a/flake-awesome-neovim-plugins
# https://github.com/NixNeovim/NixNeovimPlugins
# https://www.lazyvim.org/
# https://astronvim.com/
# https://nvchad.com/


[[Category:Applications]]
[[Category:Applications]]
[[Category:Text Editor]]
[[Category:Text Editor]]

Latest revision as of 05:30, 16 August 2024

Neovim[1] is a highly extensible and open source text editor that aims to improve upon and modernize the popular Vim[2] 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.

В нем реализована мощная архитектура плагинов, позволяющая выполнять плагины асинхронно, что может значительно повысить производительность некоторых операций. Также в него встроен эмулятор терминала, позволяющий запускать shell-команды непосредственно в редакторе. В проекте особое внимание уделяется качеству и удобству сопровождения кода, а чистая, хорошо документированная кодовая база облегчает разработчикам внесение своего вклада.

Установка

Используя nix-shell

nix-shell -p neovim

Глобально

environment.systemPackages = [
  pkgs.neovim
];

После изменения конфигурации примените изменения, выполнив:

sudo nixos-rebuild switch

Используя Home-Manager

home.packages = [ 
  pkgs.neovim 
];

После обновления конфигурации примените изменения, выполнив:

home-manager switch

Настройка

Начальная

# Глобально
programs.neovim = {
   enable = true;
   defaultEditor = true;
};

# Для одного пользователя
programs.neovim = {
  enable = true;
  extraConfig = ''
    set number relativenumber
  '';
};

Продвинутая

# Глобально
programs.neovim = {
  enable = true;
  defaultEditor = true;
  viAlias = true;
  vimAlias = true;
  configure = {
    customRC = ''
      set number
      set cc=80
      set list
      set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
      if &diff
        colorscheme blue
      endif
    '';
    packages.myVimPackage = with pkgs.vimPlugins; {
      start = [ ctrlp ];
    };
  };
};

# Для одного пользователя
# Вам нужно добавить строку ниже, чтобы установить его в качестве редактора по умолчанию:
environment.variables.EDITOR = "nvim";

Советы и рекомендации

Расположение Опций

The home manager options are defined in the following Home Manager Options Manual[3].

The global options are listed on MyNixOS[4].

Варианты Пакета

Have a look at the Neovim Nightly Overlay[5] to install the most recent current nightly version of Neovim.

You can run the master version via the following command:

nix run "github:nix-community/neovim-nightly-overlay"

Управление Плагинами

plugins = [
  # Пример Плагина: nvim-tree-lua
  pkgs.vimPlugins.nvim-tree-lua

  <div lang="en" dir="ltr" class="mw-content-ltr">
# Example Plugin: vim-startify with configuration
</div>
  {
    plugin = pkgs.vimPlugins.vim-startify;
    config = "let g:startify_change_to_vcs_root = 0";
  }

  <div lang="en" dir="ltr" class="mw-content-ltr">
# Example Plugin: nvim-colorizer-lua with Lua config
  # 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:
</div>
  {
    plugin = pkgs.vimPlugins.nvim-colorizer-lua;
    config = ''
      packadd! nvim-colorizer.lua
      lua << END
        require 'colorizer'.setup {
          '*'; <span lang="en" dir="ltr" class="mw-content-ltr">-- Highlight all files, but customize some others.</span>
          '!vim'; <span lang="en" dir="ltr" class="mw-content-ltr">-- Exclude vim from highlighting.</span>
        }
      END
    '';
  }

  # Пример плагина: nvim-treesitter с конфигурацией на языке Lua
  {
    plugin = pkgs.vimPlugins.nvim-treesitter;
    config = ''
      packadd! nvim-treesitter
      lua <<EOF
        require'nvim-treesitter.configs'.setup {
          highlight = {
            enable = true,              <span lang="en" dir="ltr" class="mw-content-ltr">-- false will disable the whole extension</span>
            disable = {},               -- список языков, которые будут отключены
          },
          incremental_selection = {
            enable = true,
            keymaps = {
              init_selection = "gnn",
              node_incremental = "grn",
              scope_incremental = "grc",
              node_decremental = "grm",
            },
          },
          textobjects = {
            select = {
              enable = true,
              lookahead = true,
              keymaps = {
                ["af"] = "@function.outer",
                ["if"] = "@function.inner",
                ["ac"] = "@class.outer",
                ["ic"] = "@class.inner",
              },
            },
          },
        }
      EOF
    '';
  }

  <div lang="en" dir="ltr" class="mw-content-ltr">
# Installing grammars for tree-sitter
  # Option 1: Install all grammar packages
  pkgs.vimPlugins.nvim-treesitter.withAllGrammars
  
  # Option 2: Install specific grammar packages
  # (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ]))
</div>

  <div lang="en" dir="ltr" class="mw-content-ltr">
# Option 3: Installing grammars without Nix
  # 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
</div>
];

Frameworks

If you prefer not to configure your system manually, NixOS offers several predefined configurations and community-supported options. Here are a few of them:

Another excellent option is LunarVim[9]. 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 lunarvim package from nixpkgs and is started with the lvim command.

Конфигурация LunarVim хранится в ~/.config/lvim.

Решение проблем

Ссылки

  1. Neovim Team, "Home - Neovim", Neovim Official Website, N/A. https://neovim.io/
  2. NixOS Wiki, Vim. https://wiki.nixos.org/wiki/Vim
  3. 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
  4. MyNixOS Team, "Search: nixpkgs/option/programs.neovim", MyNixOS, N/A. https://mynixos.com/search?q=nixpkgs%2Foption%2Fprograms.neovim
  5. Nix Community, "neovim-nightly-overlay", GitHub, N/A. https://github.com/nix-community/neovim-nightly-overlay
  6. LazyVim Team, "LazyVim", LazyVim Official Website, N/A. https://www.lazyvim.org/
  7. AstroNvim Team, "AstroNvim", AstroNvim Official Website, N/A. https://astronvim.com/
  8. NvChad Team, "NvChad", NvChad Official Website, N/A. https://nvchad.com/
  9. LunarVim Team, "Installation", LunarVim Documentation, N/A. https://www.lunarvim.org/docs/installation