mini.nvim - 最小限の労力で全体的なNeovim(バージョン20.0以降)のエクスペリエンスを向上させる7 +独立したLuaモジュールのライブラリ

(Library of 20+ independent Lua modules improving overall Neovim (version 0.7 and higher) experience with minimal effort)

Created at: 2021-06-18 16:43:57
Language: Lua
License: MIT


GitHub ライセンス GitHub タグ 現在のバージョン

20 +の独立したLuaモジュールのライブラリは、最小限の労力で全体的なNeovim(バージョン0.7以降)のエクスペリエンスを向上させます。これらはすべて、同じ構成アプローチと一般的な設計原則を共有しています。

このプロジェクトは、Neovimプラグインの中の「スイスアーミーナイフ」と考えてください:最も一般的なタスクに適した多くの異なる独立したツール(モジュール)があります。各モジュールは、起動や使用のオーバーヘッドなしで個別に使用できます。

このプロジェクトの成長を支援したいが、どこから始めればよいかわからない場合は、寄稿ガイドを確認するか、「mini.nvim」プロジェクトやスタンドアロンのGitリポジトリにGithubスターを残してください。

目次

取り付け

インストール元のブランチは 2 つあります。

  • main
    (デフォルト、推奨)プラグインの最新の開発バージョンがあります。前回の安定版リリース以降のすべての変更は、ベータテスト段階にあると認識されるべきです(つまり、すでにアルファテストに合格し、適度に解決されています)。
  • stable
    ブランチのパブリックベータテストフェーズ中にコードがテストされたリリース時にのみ更新されます。
    main

一般的なインストール方法のコード スニペットを次に示します。

コード スニペット
メイン
{ 'echasnovski/mini.nvim', version = false },
{ 'echasnovski/mini.nvim', version = '*' },
コード スニペット
メイン
use 'echasnovski/mini.nvim'
use { 'echasnovski/mini.nvim', branch = 'stable' }
コード スニペット
メイン
Plug 'echasnovski/mini.nvim'
Plug 'echasnovski/mini.nvim', { 'branch': 'stable' }
  • すべてのモジュールは、スタンドアロンの Git リポジトリとしても配布されます。詳細については、モジュールの情報を確認してください。

重要:モジュール(必要な場合)を呼び出して機能を有効にすることを忘れないでください。

setup()

:Windowsを使用している場合は、ファイルパスが長すぎると問題が発生する可能性があります( など)。次のいずれかを実行してみてください。

error: unable to create file <some file name>: Filename too long

  • 対応する git グローバル設定値を有効にします: 。その後、再インストールを試みます。
    git config --system core.longpaths true
  • パスが短い他の場所にプラグインをインストールします。

モジュール

モジュール 形容 概要 細部
mini.ai 拡張と作成/テキストオブジェクト
a
i
リードミー ヘルプファイル
ミニ整列 テキストをインタラクティブに整列する リードミー ヘルプファイル
ミニアニメイト 一般的な Neovim アクションをアニメーション化する リードミー ヘルプファイル
ミニベース16 Base16 配色の作成 リードミー ヘルプファイル
ミニベーシック 一般的な構成プリセット リードミー ヘルプファイル
ミニ括弧付き 角括弧で前後に移動 リードミー ヘルプファイル
ミニ・バフリッとは バッファの削除 リードミー ヘルプファイル
ミニコメント コメント リードミー ヘルプファイル
ミニ完了 補完と署名のヘルプ リードミー ヘルプファイル
ミニカーソルワード カーソル下の単語を自動強調表示 リードミー ヘルプファイル
ミニ.doc Neovim ヘルプファイルの生成 リードミー ヘルプファイル
ミニファジー あいまい一致 リードミー ヘルプファイル
ミニ.インデントスコープ インデント範囲の視覚化と操作 リードミー ヘルプファイル
ミニジャンプ 次/前の1文字にジャンプ リードミー ヘルプファイル
ミニジャンプ2d 可視線内にジャンプする リードミー ヘルプファイル
ミニマップ バッファーテキストを含むウィンドウの概要 リードミー ヘルプファイル
ミニ.その他 その他の関数 リードミー ヘルプファイル
ミニムーブ 選択範囲を任意の方向に移動する リードミー ヘルプファイル
ミニペア オートペア リードミー ヘルプファイル
ミニセッション セッション管理 リードミー ヘルプファイル
ミニスターター スタート画面 リードミー ヘルプファイル
ミニ.ステータスライン ステータスライン リードミー ヘルプファイル
ミニサラウンド サラウンドアクション リードミー ヘルプファイル
ミニタブライン タブライン リードミー ヘルプファイル
ミニテスト Neovim プラグインをテストする リードミー ヘルプファイル
ミニ.トレイルスペース トレイルスペース(強調表示して削除) リードミー ヘルプファイル

mini.ai

拡張して作成する/テキストオブジェクト( や など)。

a
i
di(
va"

  • いくつかの組み込みテキストオブジェクト(、など)を強化し、新しいオブジェクト(、、、など)を作成し、ユーザーが独自のテキストオブジェクト(treeitterなどに基づくなど)を作成できるようにします。
    a(
    a)
    a'
    a*
    a<Space>
    af
    a?
  • ドットリピート、さまざまな検索方法、連続したアプリケーション、およびLuaパターンまたは関数を介したカスタマイズをサポートします。
    v:count
  • 角かっこ、引用符、関数呼び出し、引数、タグ、ユーザープロンプト、および句読点/数字/空白文字の組み込みがあります。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ整列

テキストをインタラクティブに整列します(インスタントプレビューの有無にかかわらず)。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニアニメイト

一般的なNeovimアクションをアニメーション化します(追加のマッピングやコマンドを必要とせずに、箱から出してすぐに機能します)。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニベース16

手動で提供されるパレットのためのchriskempson / base16テーマの迅速な実装。

  • 30 +プラグインの統合をサポートします。
  • 背景色と前景色のみを必要とする独自のパレットジェネレーターを備えています。
  • いくつかの厳選された配色が付属しています。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニベーシック

一般的な構成プリセット

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ括弧付き

角括弧で前後に移動

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ・バフリッとは

バッファの削除 (表示解除、削除、ワイプアウト) により、ウィンドウ レイアウトが保存されます。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニコメント

高速で使い慣れた行ごとのコメント。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ完了

オートコンプリートと署名ヘルププラグイン。

  • 非同期(カスタマイズ可能な「デバウンス」遅延あり)「2段階のチェーン完了」:最初に組み込みのLSP、次に構成可能なフォールバック。
  • 完了アイテム情報と関数シグネチャの機能があります(両方ともカスタマイズ可能な遅延後に表示されるフローティングウィンドウにあります)。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニカーソルワード

カーソルの下の単語の自動強調表示(カスタマイズ可能な遅延の後に表示されます)。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ.doc

EmmyLuaのような注釈からのヘルプファイルの生成。フック関数を介して出力を柔軟にカスタマイズできます。このプラグインを文書化するために使用されます。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニファジー

最小かつ高速なファジーマッチング。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ.インデントスコープ

インデントスコープを視覚化して操作します。デバウンス遅延、アニメーションスタイル、およびスコープコンピューティングアルゴリズムのオプションのさまざまな粒度のカスタマイズをサポートします。

  • カスタマイズ可能なデバウンス遅延、アニメーションスタイル、スコープ計算オプション。
  • スコープ関連のモーションとテキストオブジェクトを実装します。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニジャンプ

次/前の1文字へのスマートなジャンプ。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニジャンプ2d

反復的なラベルフィルタリングを介して可視線内にジャンプします。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニマップ

バッファー テキストの概要、スクロール バー、および強調表示を含むウィンドウ。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ.その他

その他の便利な機能。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニムーブ

選択範囲を任意の方向に移動します。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニペア

最小で高速なオートペア。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニセッション

セッション管理 (読み取り、書き込み、削除)。

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニスターター

高速で柔軟なスタート画面

ビデオデモと簡単な概要については、READMEを参照してください。詳細については、ヘルプファイルを参照してください。


ミニ.ステータスライン

意見のあるデフォルトの外観を備えた最小かつ高速なステータスラインモジュール。

For video demo and quick overview see its README. For more details see its help file.


mini.surround

Fast and feature-rich surround plugin

  • Add, delete, replace, find, highlight surrounding (like pair of parenthesis, quotes, etc.).
  • Supports dot-repeat, , different search methods, "last"/"next" extended mappings, customization via Lua patterns or functions, and more.
    v:count
  • Has builtins for brackets, function call, tag, user prompt, and any alphanumeric/punctuation/whitespace character.
  • Has maintained configuration of setup similar to 'tpope/vim-surround'.

For video demo and quick overview see its README. For more details see its help file.


mini.tabline

Minimal and fast tabline showing listed buffers

For video demo and quick overview see its README. For more details see its help file.


mini.test

Write and use extensive Neovim plugin tests

  • Supports hierarchical tests, hooks, parametrization, filtering (like from current file or cursor position), screen tests, "busted-style" emulation, customizable reporters, and more.
  • Designed to be used with provided wrapper for managing child Neovim processes.

For video demo and quick overview see its README. For more details see its help file.


mini.trailspace

Work with trailing whitespace

For video demo and quick overview see its README. For more details see its help file.


General principles

  • Design. Each module is designed to solve a particular problem targeting balance between feature-richness (handling as many edge-cases as possible) and simplicity of implementation/support. Granted, not all of them ended up with the same balance, but it is the goal nevertheless.

  • Independence. Modules are independent of each other and can be run without external dependencies. Although some of them may need dependencies for full experience.

  • Structure. Each module is a submodule for a placeholder "mini" module. So, for example, "surround" module should be referred to as "mini.surround". As later will be explained, this plugin can also be referred to as "MiniSurround".

  • Setup:

    • Each module (if needed) should be setup separately with (possibly replace {} with your config table or omit to use defaults). You can supply only values which differ from defaults, which will be used for the rest ones.

      require(<name of module>).setup({})

    • Call to module's always creates a global Lua object with coherent camel-case name: creates . This allows for a simpler usage of plugin functionality: instead of use (or manually in command line); available from like . Considering this, "module" and "Lua object" names can be used interchangeably: 'mini.surround' and 'MiniSurround' will mean the same thing.

      setup()
      require('mini.surround').setup()
      _G.MiniSurround
      require('mini.surround')
      MiniSurround
      :lua MiniSurround.*
      v:lua
      v:lua.MiniSurround

    • Each supplied table is stored in field of global object. Like .

      config
      config
      MiniSurround.config

    • Values of , which affect runtime activity, can be changed on the fly to have effect. For example, can be changed during runtime; but changing won't have any effect (as mappings are created once during ).

      config
      MiniSurround.config.n_lines
      MiniSurround.config.mappings
      setup()

  • Buffer local configuration. Each module can be additionally configured to use certain runtime config settings locally to buffer. See section in help file for more information.

    mini.nvim-buffer-local-config

  • Disabling. Each module's core functionality can be disabled globally or locally to buffer. See "Disabling" section in module's help page for more details. See section in main help file for common recipes.

    mini.nvim-disabling-recipes

  • Silencing. Each module can be configured to not show non-error feedback globally or locally to buffer. See "Silencing" section in module's help page for more details.

  • Highlight groups. Appearance of module's output is controlled by certain highlight group (see ). To customize them, use command. Note: currently not many Neovim themes support this plugin's highlight groups; fixing this situation is highly appreciated. To see a more calibrated look, use MiniBase16 or plugin's colorscheme .

    :h highlight-groups
    highlight
    minischeme

  • 安定性。リリース時の各モジュールは、セットアップと機能の両方の点で比較的安定していると見なされます。バグ修正後方互換性のない変更は、可能な限り徐々にリリースされます。

プラグインの配色

このプラグインにはいくつかの配色が付属しています(それらはすべて「mini.base16」で作成されており、暗いバリエーションと明るいバリエーションの両方があります)。

  • minischeme
    -高コントラストと彩度パレットを備えた青と黄色のメインカラー。すべての例でこの配色を使用しています。
  • minicyan
    -適度なコントラストと彩度パレットを備えたシアンとグレーのメインカラー。

それらを通常としてアクティブ化します (たとえば、)。あなたは彼らがどのように見えるかを見ることができます 'mini.base16'のデモ

colorscheme
:colorscheme minicyan

計画中のモジュール

これは、私が現在最終的に実装しようとしているモジュールのリストです(私の自由な時間と献身が許す限り)、アルファベット順です。

  • 'mini.base3' - 背景、前景、アクセントの 16 色のみを使用する設定可能な配色。パレットジェネレータを内蔵した 'mini.base<>' のアップグレード版に似ています。
  • 'mini.clue' - カスタマイズ可能な情報を持つ「入力時に表示」フローティングウィンドウ。folke/which-key.nvimanuvyklack/hydra.nvim のようなもの
  • 'mini.colortext' - いくつかの一般的なテキスト(色文字列、 "TODO"など)を自動的に強調表示します。uga-rosa/ccc.nvim および folke/todo-comments.nvim のカラーライザー機能に似ています。
  • 'mini.filetree' - ファイルツリービューア。nvim-tree/nvim-tree.lua の簡易版。
  • 'mini.snippets' - スニペットを操作します。L3MON4D3 / LuaSnipのようなものですが、より簡単な機能しかありません。
  • 'mini.swap' - テキストの2つの領域を交換します。tommcdo / vim-exchangeのようなものです。
  • 'mini.terminals' - ターミナルウィンドウを首尾一貫して管理し、バッファからターミナルウィンドウにテキストを送信します。カシオ/ネオタームのようなもの。
  • 'mini.quickfix' - クイックフィックスエントリのあいまい検索とプレビュー。おそらく、クイックフィックスリスト(ファイル、ヘルプタグなど)を入力するためのいくつかのプリセットがあります。kevinhwang91/nvim-bqf に似ています。