| 1 | :scriptencoding utf-8 |
| 2 | :if &cp || exists("g:loaded_interval_linecommand") |
| 3 | :finish |
| 4 | :endif |
| 5 | :let g:loaded_interval_linecommand = 1 |
| 6 | |
| 7 | " escape user setting |
| 8 | :let s:save_cpo = &cpo |
| 9 | :set cpo&vim |
| 10 | |
| 11 | " return first line number |
| 12 | :function! g:IntervalLineCommand_GetFirstLine() range |
| 13 | :return a:firstline |
| 14 | :endfunction |
| 15 | |
| 16 | " cabbrev |
| 17 | :cabbrev ga g/^/ |
| 18 | :cabbrev ga2 g/^/ if ((line(".") - <C-R>=g:IntervalLineCommand_GetFirstLine()<CR> + 1) % 2 == 1) <BAR> |
| 19 | :cabbrev ga3 g/^/ if ((line(".") - <C-R>=g:IntervalLineCommand_GetFirstLine()<CR> + 1) % 3 == 1) <BAR> |
| 20 | :cabbrev ga4 g/^/ if ((line(".") - <C-R>=g:IntervalLineCommand_GetFirstLine()<CR> + 1) % 4 == 1) <BAR> |
| 21 | :cabbrev ga5 g/^/ if ((line(".") - <C-R>=g:IntervalLineCommand_GetFirstLine()<CR> + 1) % 5 == 1) <BAR> |
| 22 | |
| 23 | :let &cpo = s:save_cpo |
| 24 | :finish |
| 25 | |
| 26 | ============================================================================== |
| 27 | interval-linecommand.vim : 一定間隔の行に、コマンド実行の準備を行うスクリプト。 |
| 28 | ------------------------------------------------------------------------------ |
| 29 | $VIMRUNTIMEPATH/plugin/interval-linecommand.vim |
| 30 | ============================================================================== |
| 31 | author : 小見 拓 |
| 32 | url : http://nanasi.jp/ |
| 33 | email : mail@nanasi.jp |
| 34 | version : 2009/12/19 16:00:00 |
| 35 | ============================================================================== |
| 36 | 一定間隔のバッファの行に対してコマンドを実行する準備を整えます。 |
| 37 | |
| 38 | 1. コマンドを実行したい範囲を指定してから、 |
| 39 | 「:」を押下してコマンドモードになりましょう。 |
| 40 | |
| 41 | 2. 用意されている機能はコマンドモード用の略称で |
| 42 | ga、ga2、ga3、ga4、ga5と定義されています。 |
| 43 | ・選択行全てにコマンドを実行したい場合は、ga |
| 44 | ・選択行に1行おきにコマンドを実行したい場合は、ga2 |
| 45 | ・選択行に3行ごとにコマンドを実行したい場合は、ga3 |
| 46 | ・選択行に4行ごとにコマンドを実行したい場合は、ga4 |
| 47 | ・選択行に5行ごとにコマンドを実行したい場合は、ga5 |
| 48 | と入力し、次にスペースを入力しましょう。 |
| 49 | 略称が展開されます。 |
| 50 | |
| 51 | :'<,'>ga<SPACE> |
| 52 | "# => :'<,'>g/^/ |
| 53 | |
| 54 | :'<,'>ga2<SPACE> |
| 55 | "# => :'<,'>g/^/ if ((line(".") - 53 - 1) % 2 == 1) | |
| 56 | |
| 57 | :'<,'>ga3<SPACE> |
| 58 | "# => :'<,'>g/^/ if ((line(".") - 53 - 1) % 3 == 1) | |
| 59 | |
| 60 | :'<,'>ga4<SPACE> |
| 61 | "# => :'<,'>g/^/ if ((line(".") - 53 - 1) % 4 == 1) | |
| 62 | |
| 63 | :'<,'>ga5<SPACE> |
| 64 | "# => :'<,'>g/^/ if ((line(".") - 53 - 1) % 5 == 1) | |
| 65 | |
| 66 | 3. 展開された略称の後に、実行したいコマンドを入力してください。 |
| 67 | |
| 68 | " 例1. 1行間隔で置換 |
| 69 | :'<,'>g/^/ if ((line(".") - 53 - 1) % 2 == 1) | s/before/after/ |
| 70 | |
| 71 | " 例2. 3行ごとに、ノーマルモードのコマンドで行を削除 |
| 72 | :'<,'>g/^/ if ((line(".") - 53 - 1) % 3 == 1) | norm D |
| 73 | |
| 74 | この説明がよくわからない場合は、 |
| 75 | 次のページを見ると、このスクリプトの使い方がわかるかもしれません。 |
| 76 | |
| 77 | " ファイル内の各行ごとに編集処理を実行する、何行かおきに編集処理を実行する。 |
| 78 | http://nanasi.jp/articles/howto/editing/global-head.html |
| 79 | |
| 80 | |
| 81 | ============================================================================== |
| 82 | " vim: set et ft=vim nowrap : |
| 83 | |