download

Sign in or create your account | Project List | Help

download Git Source Tree

Root/batch.vim

1:scriptencoding utf-8
2" 1度スクリプトを読み込んだら、2度目は読み込まない
3:if &cp || exists("g:loaded_batch")
4    :finish
5:endif
6:let g:loaded_batch = 1
7
8" ユーザの初期設定を逃がす
9:let s:save_cpo = &cpo
10:set cpo&vim
11
12" 1. 選択した範囲の行のvimスクリプトを読み込む
13" 2. 一時ファイルに書き出す
14" 3. 一時ファイルに書き出したvimスクリプトを実行する
15" 4. 一時ファイルを削除する
16:function! s:Batch() range
17    " 選択した範囲の行のvimスクリプトを読み込む
18    :let l:selected = getline(a:firstline, a:lastline)
19    " 一時ファイルの名前を取得する
20    :let l:tempfile = tempname()
21    " try-finally文で確実に一時ファイルを後始末する
22    :try
23        " 一時ファイルに読み込んだスクリプトを書き出す
24        :call writefile(l:selected, l:tempfile)
25        :try
26            " 一時ファイルのvimスクリプトを実行する
27            :execute ":source " . l:tempfile
28        :catch
29            " エラー発生時は、エラーの原因とエラーの起きた場所を表示
30            :echohl WarningMsg |
31                \ :echo "EXCEPTION :" v:exception |
32                \ :echo "THROWPOINT:" v:throwpoint |
33                \ :echohl None
34        :endtry
35    :finally
36        " ファイルを変更できるかチェック
37        " (ついでにファイルがあるかどうかも)
38        :if filewritable(l:tempfile)
39            " 一時ファイルを削除
40            :call delete(l:tempfile)
41        :endif
42    :endtry
43:endfunction
44
45" 行を選択して実行するコマンドBatch。s:Batch()を呼び出す
46:command! -range -narg=0 Batch :<line1>,<line2>call s:Batch()
47
48" 退避していたユーザのデータをリカバリ
49:let &cpo = s:save_cpo
50" スクリプトはここまで
51:finish
52
53==============================================================================
54batch.vim : 選択した範囲に記述されたvimスクリプトを実行する
55------------------------------------------------------------------------------
56$VIMRUNTIMEPATH/plugin/batch.vim
57==============================================================================
58author : 小見 拓
59url : http://nanasi.jp/
60email : mail@nanasi.jp
61version : 2009/12/19 16:00:00
62==============================================================================
63vimスクリプトを記述した行をビジュアルモードで選択して、
64:'<,'>Batch
65で、選択した範囲の行のvimスクリプト文を順に実行する。
66
67・設定ファイルの一部のみ読み込んで、結果を見たい時
68・スクリプトの一部分のみ、テスト的に実行したい時
69などに使用する。
70
71==============================================================================
72" vim: set et ft=vim nowrap :
73

Archive Download this file

Branches:
master