web-dev-qa-db-ja.com

どうすれば外部ファイルから.vimrcを読み取れますか?

外部ファイルから変数の値を読み取るように.vimrcを変更したいと思います。これどうやってするの?

具体的には、友人と私は.vimファイルとgitリポジトリを共有していますが、構成に必要なものにいくつかの小さな違いがあります。したがって、ほとんどのファイルは一般的ですが、ifステートメントを使用して、次のようにユーザー固有のセクションをロードするかどうかを決定します。

let whoami = "user2"
if whoami == "user1"
...

共通の.vimrcをソース管理からチェックした後、let whoamiの割り当てをそれぞれ変更して、独自のセクションが読み込まれるようにする必要があります。代わりに、個別のファイルを保持したいと思います。このファイルは、私たち一人ひとりに異なる可能性があり、vimはそこからその変数値をロードします。

多分これの別の角度は次のとおりです:vimは自動的に.vimディレクトリ内のすべてのファイルを読み取りますか?もしそうなら、それぞれにそこにusername.vimと呼ばれるシンボリックリンクを配置し、それを私たちごとに異なる外部ファイル。

27
Nathan Long

メインの.vimrcファイルで:

source otherVimScriptFilePath.vim

次に、変数ステートメントをそのファイルに入れます。

" otherVimScriptFilePath.vim
let whoami = "user1"
36

Try/catchを使用する

この質問をして以来、外部ファイルをロードするための別のユースケースを思いつきました:マシン固有の調整です。

特定のマシンで微調整を行う必要がある場合とない場合があるため、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 
6
Nathan Long

最後の質問に答えるために、~/.vimは自動的に読み込まれませんが、~/.vim/pluginです。

5
Heptite

〜/ .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()関数が必要です。

4
garyjohn

ログインしたユーザーの名前は、$ USER環境変数で確認できます。その変数には簡単にアクセスできます。

:echo $USER

だから、ただ使う

execute "silent! source vimrc." . $USER

あなたのvimrcにあなたのユーザー固有の設定を入れてください

vimrc.joe

またはあなたのログイン名は何でも

2
akira

Vimrcがどのように見えるかわからないので、これは現実的ではないかもしれませんが、あなたとあなたの友人が共有する大きな部分がある場合、それらを別々のプラグインに分割することをお勧めします。 ~/.vim/pluginディレクトリにファイルを追加して、起動時にそれらをロードできます。 (それらはアルファベット順に読み込まれます-確認するには:scriptnamesを使用してください。)

そうすれば、それぞれが完全に一意のvimrcを持つことができますが、一般的な構成はすべてプラグインにあります。それらを論理的に分割すると、他のユーザーとの共有も簡単になります。

0
idbrii