回答:
OSの検出.vimrc
:
if has('win32')
......
elseif has('mac')
......
elseif has('unix')
......
endif
has('mac')
ますが、すべてのMacに当てはまるのか、OS-X以前のMacに当てはまるのかはわかりません。:help feature-list
完全なリストを参照してください。
has('unix')
。私の間違い。
has("mac")
。私は、彼らが実際に機能テストを機能させるパッチを使用したと推測しています。has("mac")
テストに依存している場合は、vimでサポートされていることを確認するためにテストを行います。
特定のマシンをテストするために、hostname
コマンドの出力をテストできます。例えば、
let hostname = substitute(system('hostname'), '\n', '', '')
if hostname == "tigger"
...
elseif hostname == "pooh"
...
endif
利用可能な環境変数の値をテストすることもできます。
if $HOSTNAME == "tigger"
...
elseif $HOSTNAME == "pooh"
...
endif
$DISPLAY
変数にも役立ちます。
system('hostname')
だったmachine.mycompany.com\n
ので、代わりのコマンドをに変更する必要がありましたsubstitute(system('hostname'), '\.\_.*$', '', '')
。
私は私のスニペットを持っていますvimrc
:
let s:host_vimrc = $HOME . '/.' . hostname() . '.vimrc'
if filereadable(s:host_vimrc)
execute 'source ' . s:host_vimrc
endif
これはsource $HOME/.$HOSTNAME.vimrc
、存在する場合に単に実行されます。使用hostname()
して連結しましexpand('$HOME/.$HOSTNAME.vimrc')
た$HOSTNAME
が、常に設定されていることがわかっている場合は、より簡潔に使用することもできます。
OS検出に関する以前の回答では、MacVimでOS Xを検出しません(またhas("macunix")
、ドキュメントで推奨されているとおりに使用しません)。
以下は、WindowsとOS Xを区別するために使用するものです。
if has("win32")
"Windows options here
else
if has("unix")
let s:uname = system("uname")
if s:uname == "Darwin\n"
"Mac options here
endif
endif
endif
has("win32")
64ビットWindows上の64ビットVimでも、私にとってはうまくいったことに注意してください。
ブロックuname
内で同様のテストを使用して、if has("unix")
他のUnixのフレーバーを区別することもできます。を実行するuname
かuname -a
、コマンドラインから実行して、比較する必要があるものを確認しますs:uname with
。:h matchstr()
unameの出力の一部だけを比較する必要がある場合も参照してください。
has('gui_running')
、ttyモードとGUIモードを区別する必要がある場合にも役立ちます。