Vimと互換性を持つNeovim構成を持つ方法
5501 ワード
So you can have your cake and eat it too.
私はすでに約8年間のVimユーザーだった.今回のほとんどはNeovimを使用してコードを書いており、Luaの統合はannouncedのとき、私は可能性に興奮していました.私は自宅で私のVIMの設定を使用しても仕事で.Booking.comでは、リモートマシンでの合理的な量の開発を行います.典型的には、SSHを使ってリモートマシンにアクセスし、そこで作業をします.これらのマシンの多くは、外部パッケージをインストールすることについて全く自由です.しかし、リモートマシンに接続するときには、ドットファイルをコピーすることができます内部システムがあります.
これらの年のほとんどのために、私はvimとneovimの間で私の構成互換性を保った.すべてのVMの設定は、デフォルトではNeoVIMで動作するはずですが、他の方法.私はNeovimが環境で利用できないならば、私がVimで構成を始めることができたように、必要ならば病棟の下で特別なNeovim機能とプラグインを管理しました.Luaのプラグインが関与しているときに、このソリューションはもう動作しません.
要件
これらは設定のために必要です.
解決策
私のneovim構成ディレクトリはどのように見えますか.
これは私の(例えば)vimの設定がどのように見えるかです.ディレクトリは$ HOME/にあります.Neovimのデフォルトの場所です.Vimを使う必要がある場合、2つのシンボリックリンクを設定します→
$HOME/.config/nvim
と$HOME/.vim
→ $HOME/.config/nvim/init.vim
INITVim :設定のエントリポイントです.それは両方のために動作するVIMプラグを使用してプラグインをロードします.プラグインがどこに位置するべきであるか、そして、それがNeovimまたはVimであるならば、それによってプラグインをロードするところも定義しました.また、他のすべての設定ファイルを読み込みます.
普通.Vim :バインディング、タブ、ワードラッピングなどのいくつかのような一般的な設定が含まれています.これらのすべての設定は、古典的なvim構成で、両方とも同じです.親指のルールは、両方のために有効ではなく、プラグインはここに行くことです.プラットホームの間に矛盾があるならば、Neovimバージョンは優先します.
プラグイン.Vim:共通の補足Vim両方のバージョンで使用されるすべてのプラグインの設定は、例えばNERDTree、easymotionまたはlightline.vimのように、ここに行きます.
オンリムビームVim:自己説明.これらはvimでのみロードされる設定です.それらは、余分な構成やVIM専用プラグインを必要とするプラットフォーム間ではほとんど矛盾しています.ロードされるので、それはNeovimの構成を上書きします.
言語:このディレクトリには、両方のバージョンで使用されるカスタム言語の構成が含まれています.たとえば、ファイル
$HOME/.vimrc
は、languages/golang.vim
ファイルを編集するとき、スペースの代わりにタブを使用するためにタブの構成を変えます.Lua : NeoVimのためのすべてのLuaコードを含みます.ここにルアコードを置くネオビムの要件です.NeoVimの設定は一般的なファイルで行われ、優先順位が行われます.これは、このフォルダにはluaプラグインの設定がほとんど含まれることを意味します.すべてのファイルは、具体的なプラグインのコンフィギュレーションです.キッチンシンクとしてのルア.これらのプラグインには、一般的に、言語サーバのバインド、構文ハイライト、オートコンプリートなどを設定するため、重い構成が必要です.コンテンツのほとんどは、異なる言語サーバーの構成です.
INITにプラグインをロードする順番.ビーム物質
私が使用するいくつかのクールなプラグインとその等価性
これは少しの話題ですが、これは私が使用するプラグインとVIMとNeovimのそれらの等価物の選択です.私の構成のすべてのプラグインの完全なリストのために、あなたはinitをチェックすることができます.VMFILE on Github .あなたは常にNeovimでVIMプラグインを使用することができますが、他の方法ではないことを忘れないでください.
gitsigns.nvim→ vim-gitgutter
telescope.nvim→ ctrlp.vim
nvim-treesitter→ vim-polyglot
indent-blankline→ braceless.vim
エクストラトリック
このスニペットは、プラグインをVimプラグを使用して条件をロードするのに役立ちます.
" Lazy loading
" From [https://github.com/junegunn/vim-plug/wiki/faq#conditional](https://github.com/junegunn/vim-plug/wiki/faq#conditional-)-
" activation
function! Cond(cond, ...)
let opts = get(a:000, 0, {})
return a:cond ? opts : extend(opts, { 'on': [], 'for': [] }) endfunction
これら二つの変数はvimとneovimを区別するために使用できる.技術的には1つしか必要ありませんが、両方を持つことはよりわかりやすいです.また、ベースパスを定義することは、vim-plugが適切な場所でそれらを見つけることができる必要があるのを助けます.let is_vim = !has('nvim')
let is_nvim = has('nvim')
if is_nvim
let $BASE = stdpath('config')
else
let $BASE = '$HOME/.vim'
endif
call plug#begin($BASE.'/plugged')
このポストは好きでしたか.私に知らせてください!Reference
この問題について(Vimと互換性を持つNeovim構成を持つ方法), 我々は、より多くの情報をここで見つけました https://dev.to/threkk/how-to-have-a-neovim-configuration-compatible-with-vim-2alnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol