24067


複数環境で同じ`.vimrc`を使っているのですが、Vimのバージョンが違ったりしてオプションが存在しないと`set`するときにエラーが起きます。

オプションごとにいちいち`if exists('+option')`するのが面倒なので`call
setoption('option')`などとすればオプションの存在を確認しつつ設定してくれる関数（またはコマンド）が欲しいのですが、そのようなことは可能でしょうか？
または他に何か良い方法はありますか？


CC BY-SA 3.0
2016-04-16T07:31:56.277
24065
2016-08-16T14:24:04.713
2988
question
vim
Vimでオプションの存在を確認しつつ設定する関数やコマンド

[code]

    function! SetOption(opname, val) abort
        if exists('+' . a:opname)
            execute printf('set %s=%s', a:opname, a:val)
        endif
    endfunction
    
    call SetOption('conceallevel', 2)
    
[/code]

こういうのはどうでしょうか？


CC BY-SA 3.0
2016-04-16T07:44:53.147
24066
2016-04-16T08:46:35.567
2016-04-16T08:46:35.567
3054
15102
24065
answer


存在しないオプションを無視する程度なら、`:silent!`でエラーメッセージを表示させないのもアリかと思います。

例:

[code]

    :silent! set conceallevel=2
    
[/code]

<http://vim-jp.org/vimdoc-ja/various.html#:silent>!


CC BY-SA 3.0
2016-04-16T07:50:12.273
24067
2016-08-16T14:15:37.687
2016-08-16T14:15:37.687
9575
9575
24065
answer