Hatena::Groupvim

オプションの一時設定/復元

オプションの一時設定/復元

VimScriptでは Dictionary function を使ってプロトタイプベース・オブジェクト指向プログラミング的なことができる。

OptionManagerオブジェクト

let s:OptionManager = { 'originals' : {} }

function! s:OptionManager.set(name, value)
  call extend(self.originals, { a:name : eval('&' . a:name) }, 'keep')
  execute printf('let &%s = a:value', a:name)
endfunction

function! s:OptionManager.restore_all()
  for [name, value] in items(self.originals)
    execute printf('let &%s = value', name)
  endfor
  let self.originals = {}
endfunction

使用例: オプションの一時設定
:call s:OptionManager.set('completeopt', 'menuone,preview')
:call s:OptionManager.set('lazyredraw', 0)
使用例: オプションを一時設定前の状態に復元する
:call s:OptionManager.restore_all()
備考