VimScriptをその場で実行

.vimrcがやたら汚くなってきたので書き直し中。いちいちsource %とかするのが面倒なので、その場で反映させたい。いつも忘れるのでメモ。

ヘルプをみると、

@{0-9a-z".=*} Execute the contents of register

@レジスタレジスタ内のコマンドが実行できるので、それを利用してっと

~/.vim/after/ftplugin/vim.vimに追加する。

nmap <silent><buffer> <SPACE>e "zyy:@z<CR>
vmap <silent><buffer> <SPACE>e "zy:@z<CR>

スペース + eで、

  • ノーマルの場合行実行。
  • ビジュアルの場合選択範囲実行。

こんなに大きなキーがあるのに活用してなかったとは!!

色々スペースに割り当てていこうかと思う。

ついでに

保存して全体実行

map <silent><buffer> <F5> :call <SID>Execute(expand('%:p'))<CR>

function! <SID>Execute(path)
  w
  if (a:path =~ "^${HOME}/.vim/")
    execute 'runtime ' .  substitute(a:path, "^${HOME}/.vim/", "", "")
  else
    execute 'source ' . a:path
  endif
endfunction

pathによって、反映するコマンドを変更するようにしてみた。

すげー快適。

VimScriptメモ

VimScriptでは実行中の関数は動的に変更出来ないっぽい。怒られる。