VimとEmacsの構成をバージョン管理下に置きたいのですが、ホームフォルダー全体をそこに置きたくありません(つまり、そうしますが、3つの別々のリポジトリが必要です)。Emacsを使えば簡単です。~/.emacs存在しない場合は~/.emacs.d/init.el、initファイルとして使用されます。だから私は別のGitリポジトリを持つことができます~/.emacs.d/。Vimでは、ホームフォルダにのみ存在でき、 (と同等)には存在.vimrcできないようです。これはバージョン管理下に置くための最良の方法ですか?~/vimfiles~/.emacs.d.vimrc
5 に答える
ダミーの.vimrcを〜に1行だけ入れてください:
source ~/path/to/real/vimrc
チャームのように機能します
おそらく、あなた.vimrcを家に移動し~/.vim/、家にシンボリックリンクすることでうまくいくでしょうか?
他のはるかにモジュール化されたアプローチは、スタートアップスクリプトを移動し~/.vim/plugins/、おそらくそこにサブディレクトリを作成し、単一または複数のinitスクリプトを作成することです。Vimは:runtime! plugin/**/*.vim起動時にを実行します。
@Progoが回答で示唆しているように、~/.vimrc設定は。のようなファイル内の「プラグイン」スクリプトに移動できます~/.vim/plugin/00rc.vim。
この道を進むときに覚えておくべきことがいくつかあります。
~/.vimrcユーザーとプラグインは同様に、プラグインがで説明されているようになる前に、の設定がロードされていることを期待しています:help startup。 ~/.vim通常は「runtimepath」の最初ですが、ユーザーが他のプラグインを持っている場合は、最初にロードされるように、辞書式順序で最初~/.vim/pluginに.vimrc置き換える必要があります~/.vim/plugin/00rc.vim。
vimの起動プロセスがステップ3の「Exコマンドの実行」(ここで.vimrc読み取られます。もう一度参照してください:help startup)からステップ4の「プラグインスクリプトのロード」に移行すると、実行され:runtime! plugin/**/*.vimます。このコマンドは、「runtimepath」を調べて、ソースに一致するファイルを探し、それらのソースを開始します。これは、何かが~/.vim/plugin/00rc.vim「runtimepath」を変更した場合、実行されるプラグインに影響を与えるには遅すぎることを意味します。これは病原体で最も一般的に発生し、その場合、次の行を末尾に追加することで回避できます~/.vim/plugin/00rc.vim。
" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim
最後に(ここでもで説明されているように:help startup)、~/.vimrcファイルが存在しない場合、vimはのような他のファイルを検索する~/.exrcので、それらの内容が不要な場合はそれらを削除する必要があるかもしれません。
プロセスにステップを追加しますが、vim設定にbashスクリプトdeploy.shがあります。
#!/bin/bash
if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
echo "Already have ~/.vimrc symlink, we're good"
else
echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
ln -s ~/.vim/vimrc ~/.vimrc
fi
git submodule init
git submodule update
バックアップをバージョン管理に保持し、必要なときにホームディレクトリに展開(つまり移動)することができます。このすべての処理を管理する簡単なスクリプトを作成できるので、少なくとも透過的に、スクリプトを前後に移動するのが面倒な作業のようには見えません。