Neovim/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "==== Пролвинутая ==== <syntaxhighlight lang="nix"> # Глобальная Настройка 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.vimPl..."
Unabomberlive (talk | contribs)
Created page with "==== Начальная ==== <syntaxhighlight lang="nix"> # Глобальная Настройка programs.neovim = { enable = true; defaultEditor = true; };"
Line 38: Line 38:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
==== Начальная ====
==== Basic ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
# Global Configuration
# Глобальная Настройка
programs.neovim = {
programs.neovim = {
   enable = true;
   enable = true;
   defaultEditor = true;
   defaultEditor = true;
};
};
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Revision as of 10:12, 27 July 2024

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.

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

Установка

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

nix-shell -p neovim

Глобально

environment.systemPackages = [
  pkgs.neovim
];

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

sudo nixos-rebuild switch

Using Home Configuration

home.packages = [ 
  pkgs.neovim 
];
After updating your configuration, apply the changes by running:
home-manager switch

Configuration

Начальная

# Глобальная Настройка
programs.neovim = {
   enable = true;
   defaultEditor = true;
};

<div lang="en" dir="ltr" class="mw-content-ltr">
# Home Configuration
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 ];
    };
  };
};

<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:
environment.variables.EDITOR = "nvim";

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

Location of Options

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

The global options are listed on MyNixOS.

Neovim Nightly

Have a look at the Neovim Nightly Overlay 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"

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:

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

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

Plugin Management

plugins = [
  # Example Plugin: nvim-tree-lua
  pkgs.vimPlugins.nvim-tree-lua
</div>

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

  <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:
  {
    plugin = pkgs.vimPlugins.nvim-colorizer-lua;
    config = ''
      packadd! nvim-colorizer.lua
      lua << END
        require 'colorizer'.setup {
          '*'; -- Highlight all files, but customize some others.
          '!vim'; -- Exclude vim from highlighting.
        }
      END
    '';
  }
</div>

  <div lang="en" dir="ltr" class="mw-content-ltr">
# Example Plugin: nvim-treesitter with Lua config
  {
    plugin = pkgs.vimPlugins.nvim-treesitter;
    config = ''
      packadd! nvim-treesitter
      lua <<EOF
        require'nvim-treesitter.configs'.setup {
          highlight = {
            enable = true,              -- false will disable the whole extension
            disable = {},               -- list of languages that will be disabled
          },
          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>

  # Установка грамматики для tree-sitter
  # Вариант 1: Установите все пакеты грамматики
  pkgs.vimPlugins.nvim-treesitter.withAllGrammars
  
  # Вариант 2: Установите специальные пакеты грамматики
  # (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ]))

  <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
];

Ссылки