外部ファイルから変数の値を読み取るように.vimrc
を変更したいと思います。これどうやってするの?
具体的には、友人と私は.vim
ファイルとgitリポジトリを共有していますが、構成に必要なものにいくつかの小さな違いがあります。したがって、ほとんどのファイルは一般的ですが、ifステートメントを使用して、次のようにユーザー固有のセクションをロードするかどうかを決定します。
let whoami = "user2"
if whoami == "user1"
...
共通の.vimrc
をソース管理からチェックした後、let whoami
の割り当てをそれぞれ変更して、独自のセクションが読み込まれるようにする必要があります。代わりに、個別のファイルを保持したいと思います。このファイルは、私たち一人ひとりに異なる可能性があり、vimはそこからその変数値をロードします。
多分これの別の角度は次のとおりです:vimは自動的に.vim
ディレクトリ内のすべてのファイルを読み取りますか?もしそうなら、それぞれにそこにusername.vimと呼ばれるシンボリックリンクを配置し、それを私たちごとに異なる外部ファイル。
メインの.vimrcファイルで:
source otherVimScriptFilePath.vim
次に、変数ステートメントをそのファイルに入れます。
" otherVimScriptFilePath.vim
let whoami = "user1"
この質問をして以来、外部ファイルをロードするための別のユースケースを思いつきました:マシン固有の調整です。
特定のマシンで微調整を行う必要がある場合とない場合があるため、try/catch
外部ファイルをロードします。そのようなファイルがない場合は、黙って失敗させます。
" If there are any machine-specific tweaks for Vim, load them from the following file.
try
source ~/.vimrc_machine_specific
catch
" No such file? No problem; just ignore it.
endtry
最後の質問に答えるために、~/.vim
は自動的に読み込まれませんが、~/.vim/plugin
です。
〜/ .vimrcに:source
コマンドを使用して別のファイルをロードさせることができます。たとえば、独自のコマンドをそれぞれ〜/ .myvimrcに入れ、それらのコマンドを
source ~/.myvimrc
または、あなたが考えていたように、あなたはそれぞれ次のようにあなたの名前をそのファイルに入れることができます:
let user = "user1"
そして、これを〜/ .vimrcに入れます:
source ~/.myvimrc
if user == "user1"
" do this
elseif user == "user2"
" do that
else
echo "Invalid user"
endif
ただし、ファイルに名前を置くのではなく、akiraが提案するように$ USERを使用するか、user
を使用してwhoami
を次のように設定できます。
let user = substitute(system('whoami'), '\n', '', '')
System()の出力の最後には通常「\ n」が付いているため、substitute()関数が必要です。
ログインしたユーザーの名前は、$ USER環境変数で確認できます。その変数には簡単にアクセスできます。
:echo $USER
だから、ただ使う
execute "silent! source vimrc." . $USER
あなたのvimrcにあなたのユーザー固有の設定を入れてください
vimrc.joe
またはあなたのログイン名は何でも
Vimrcがどのように見えるかわからないので、これは現実的ではないかもしれませんが、あなたとあなたの友人が共有する大きな部分がある場合、それらを別々のプラグインに分割することをお勧めします。 ~/.vim/plugin
ディレクトリにファイルを追加して、起動時にそれらをロードできます。 (それらはアルファベット順に読み込まれます-確認するには:scriptnames
を使用してください。)
そうすれば、それぞれが完全に一意のvimrcを持つことができますが、一般的な構成はすべてプラグインにあります。それらを論理的に分割すると、他のユーザーとの共有も簡単になります。