lua で書かれた最小限の Neovim 構成
目次
Neovim は Vim の非常に優れた後継製品であり、互換性を重視しながら非同期プラグイン機能を追加し、コード ベースをクリーンアップしようとしています。 Sublime Text (2 と 3) と Atom の両方に何度もうんざりし、SSH 経由でどれだけの開発を行っているかに気づいた後、IDE として vim (この場合は nvim) を使用することを検討するのが合理的であるように思えました。利点は本質的に次のとおりです。
そこで、このリポジトリを作成することにしました。いくつかのバージョンがあるので、CHANGELOG を確認してください。
この構成は出発点として意図されており、私のニーズにのみ適合します。カスタマイズしたい場合は「6.カスタマイズ」へお進みください。
mv ~ /.config/nvim ~ /.config/nvim.bak
OS | パス |
---|---|
Linux、MacOS | $XDG_CONFIG_HOME/nvim 、 ~/.config/nvim |
Windows (cmd) | %localappdata%nvim |
Windows (パワーシェル) | $env:LOCALAPPDATAnvim |
注:フォークの URL は次のようになります:
https://github.com/<your_github_username>/neovim-config.git
注上記の推奨手順に従う場合 (つまり、リポジトリのフォーク)、以下のコマンドの
ntk148v
<your_github_username>
に置き換えます。
git clone https://github.com/ntk148v/neovim-config.git " ${XDG_CONFIG_HOME :- $HOME / .config} " /nvim
cmd.exe
使用している場合:
git clone https://github.com/ntk148v/neovim-config.git " %localappdata%nvim "
powershell.exe
使用している場合
git clone https://github.com/ntk148v/neovim-config.git " ${env : LOCALAPPDATA} nvim "
nvim
git pull
使用して更新し続ける必要があります。 config 内のファイルは適切なタイミングで自動的にロードされるため、これらのファイルを手動で要求する必要はありません。
tree ~ /.config/nvim
├── init.lua
├── lazy-lock.json
└── lua
├── autocmds.lua
├── custom.lua
├── mappings.lua
├── options.lua
├── plugins
│ ├── configs
│ │ ├── cmp.lua
│ │ ├── gitsigns.lua
│ │ ├── lspconfig.lua
│ │ ├── lualine.lua
│ │ ├── luasnip.lua
│ │ ├── mason.lua
│ │ ├── null-ls.lua
│ │ ├── telescope.lua
│ │ ├── tree.lua
│ │ └── treesitter.lua
│ └── init.lua
└── sample_custom.lua
プラグイン | 説明 |
---|---|
怠惰な.nvim | Neovim 用の最新のプラグイン マネージャー |
メイソン.nvim | Neovim が実行されるどこでも実行できる Neovim 用のポータブル パッケージ マネージャー。 LSP サーバー、DAP サーバー、リンター、フォーマッタを簡単にインストールおよび管理します。 |
nvim-lspconfig | Neovim の組み込み言語サーバー クライアントの一般的な構成のコレクション |
ギットサイン | 純粋に lua/teal で実装された超高速 git デコレーション |
nvim-treesitter | Nvim Treesitter 構成と抽象化レイヤー |
nvim-cmp | オートコンプリートプラグイン |
ルアスニップ | Lua で書かれた Neovim のスニペット エンジン |
nvim-tree.lua - | Lua で書かれたファイル エクスプローラー |
nvim-autopairs | Neovim 用の超強力なオートペアリング |
nvim-web-devicons | neovim 用の vim-web-devicons の Lua fork |
ルアライン.nvim | 純粋な lua で書かれた非常に高速で設定が簡単な neovim statusline プラグイン。 |
Norcalli/nvim-colorizer.lua | 最速の Neovim カラーライザー。 |
nvim-telescope/telescope.nvim | 検索、フィルター、プレビュー、選択。いつでもオールルア。 |
ロゼパイン | Neovim のソーホーの雰囲気 |
nvimtools/none-ls.nvim | null-ls.nvim reloaded / Neovim を言語サーバーとして使用し、Lua 経由で LSP 診断、コード アクションなどを挿入します。 |
folke/what-key.nvim | 定着するキーバインディングを作成します。 WhichKey は、入力時にポップアップに利用可能なキーバインドを表示することで、Neovim キーマップを記憶するのに役立ちます。 |
デフォルトでは、次の LSP サーバーがインストールされ、構成されています。
さらに、nvim-treesitter と統合して、豊富な構文ハイライトやその他の言語解析マジックを提供します。
あなたの言語がサポートされていない場合は、次に従ってください。
:LspInstall ` <your_language_server> `
:TSInstall ` <language_to_install> `
カスタム ファイルを編集することで、LSP サーバーと言語構文の強調表示を追加できます。
これらはデフォルトのキーマップです。次のショートカットでは、 <leader>
+` キーが `` (スペース) 文字に設定されています。keymaps.lua を確認してください。
ショートカット | モード | 説明 |
---|---|---|
kk | 入れる | Escキーとkk |
<leader> + r | 普通 | 設定ファイルをリロードする |
<leader> + s | 普通 | ファイルの保存 |
<leader> + q | 普通 | 保存して (すべてのウィンドウを閉じて) Neovim を終了します。 |
<leader> + n | 普通 | NvimTreeを開く |
<leader> + nr | 普通 | NvimTree を更新する |
<leader> + nf | 普通 | NvimTree でファイルを検索 |
<leader> + ff | 普通 | Telescope を開いてファイルを検索します |
<leader> + fg | 普通 | Telescope を開いてライブ grep を実行する |
<leader> + FB | 普通 | Telescopeを開いてバッファをリストします |
<leader> + fh | 普通 | Telescope を開いてヘルプを表示する |
<leader> +フォ | 普通 | Telescope を開いて最近開いたファイルを表示する |
<leader> + cm | 普通 | Telescope を開いて git コミットを一覧表示します |
<leader> + wh/j/k/l | 普通 | スプリットを移動する |
mm | 普通 | コメント行/コメント解除行 |
デフォルトのキーマップは多数あり、 :map
コマンドを使用して確認できます。他にも次のようなバリエーションがあります。
:nmap
(通常モードのマッピング):vmap
(ビジュアル モード マッピング用):imap
挿入モードマッピング用上記のリストは完全ではありません。 Vim で:help map
と入力すると、詳細情報が表示されます。
custom
モジュールを作成することで、この構成をカスタマイズできます。次の 2 つの方法のいずれかを選択できます。
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom.lua
ファイルを作成します。${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom/
を作成します。出発点となるサンプル カスタム ファイルをチェックアウトしてください。ロジックは CyberNvim から取得されています。設定には多数の定義されたセクションがあります。
M.setup_sources
は、Null-ls に接続するための追加のソースを追加するために使用されます。ソースのリストはここで見つけることができます。パラメータ b は null_ls.builtins の短縮形です。M.ensure_installed
追加の Treesitter ハイライターを追加するために使用されます。M.plugins
には、独自のプラグイン定義を追加します。M.configs
、独自の構成の最も重要なセクションです。ここで、自動コマンドを定義したり、ファイルを要求したり、現在の設定を完全に移植したりできます。M.formatting_servers
、自動フォーマット ルールを設定するために使用されます。自動フォーマット機能を提供する言語サーバーを選択する必要があります気軽に問題を提出したり、プルリクエストを開いたりしてください。どういたしまして!