🔖
Vim / NeovimでOS別に設定を切り替える
異なるOS間で共通の.vimrc
やinit.vim
を使用する場合,OSごとに設定項目の値を変えたり,特定のOSのみ有効な設定を記述したりしたいことがある.
そんなときはVimのhas()
関数を使えばよい.
has()
とは
has({feature})
は,実行中のVim / Neovimが{feature}
をサポートしているなら1
を,していないなら0
を返す関数である.
ここでは{feature}
に各OSに対応した文字列を指定することで実行OSを判別する.
文字列とOSの対応は以下の通り.
{feature} |
OS |
---|---|
mac |
macOS |
linux |
Linux |
unix |
Unix |
sun |
SunOS |
bsd |
BSD(ただしmacOSの場合はmac を使用) |
win32 |
Windows 32bit |
win64 |
Windows 64bit |
wsl |
Windows Subsystem for Linux (WSL) |
使用例
macOSだけで有効にしたい設定を記述したい場合を例に説明する.
Vimの場合
if has('mac')
# ここにmacOSの時だけ有効にしたい設定を記述
Neovimの場合
Neovimでは設定をVim Scriptではなくlua言語で記述するのが一般的である.
そこで,has()
を直接呼び出す代わりにVim Scriptのネイティブ関数を提供するvim.fn
を利用する.
if vim.fn.has('mac') == 1 then
-- ここにmacOSの時だけ有効にしたい設定を記述
参考
- Vim内の公式ヘルプ(
:h has
)
Discussion