🔖

Vim / NeovimでOS別に設定を切り替える

2023/07/11に公開

異なるOS間で共通の.vimrcinit.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