【Vim】マクロを使って変数を上から順に連番に変換する手順

スポンサードリンク

動機

Oracle の PL/SQL に書かれている、動的 SQL を PostgreSQL で動かしたいですの♪

パラメータ値は、:paraA、:paraB、といった形ですわ。

によりますと、パラメータ値は $1、$2 といった形に変換する必要があるそうですの!

したがいまして、:paraA → $1、:paramB → $2 と変換する必要がございます。

1つ2つなら手作業で問題ありませんが、100、200となりますと手作業では行なえませんの><。

今回、Vim のマクロ機能を使いましてこの問題を解決できましたのでノートいたします♪

“【Vim】マクロを使って変数を上から順に連番に変換する手順”の続きを読む

【Git】Windows でエディタを GVim を設定する手順

前提

GVim は次の場所にインストールしているといたします。

  • C/Users/username/AppData/Local/vim/gvim.exe

Git エディタ変更手順

“【Git】Windows でエディタを GVim を設定する手順”の続きを読む


スポンサードリンク

【GVim】_gvimrc、_vimrc 内容をノート

" フォント設定:
"
" Windows 用
set guifont=MS_Gothic:h9:cSHIFTJIS

" ウインドウに関する設定:
"
" ウインドウの幅
set columns=150
" ウインドウの高さ
set lines=45
" ウインドウの高さ (GUI 使用時)
set cmdheight=1

" マウスに関する設定:
"
" どのモードでもマウスを使えるようにする
set mouse=a
" マウスの移動でフォーカスを自動的に切り替える
set mousefocus
" 入力時にマウスポインタを隠さない
set mousehide
" ビジュアル選択 (D&D 他) を自動的にクリップボードへ (:help guioptions_a)
set guioptions+=a

“【GVim】_gvimrc、_vimrc 内容をノート”の続きを読む

【Vim】Windows 7 での Vim インストール場所を変更しました

変更したい理由

netupvim を管理者として実行し忘れると、

  • Vim のアップデートができない。
  • 中間ファイルが残ってしまう。

という問題があるからですの。

今までのとこれからの Vim 配置場所

“【Vim】Windows 7 での Vim インストール場所を変更しました”の続きを読む

【Vim】【Windows】設定ファイルを読み込む設定を確認するコマンド

Vim が起動時に読み込むユーザーホームディレクトリ下のディレクトリを確認したいですわ。

とある言語のシンタックスハイライトを追加する必要がありましたの。この際に、Vim のインストールフォルダには手を触れたくありませんでした、というのが理由ですわ。

:set runtimepath

すると ~/vimfiles および ~/vimfiles/after が、Vim 起動時に読み込まれるユーザーホームディレクトリのデフォルトであることがわかります。

“【Vim】【Windows】設定ファイルを読み込む設定を確認するコマンド”の続きを読む

【Vim】【Windows7】権限不足で netupvim が使用できなかった問題を解決

問題

にしたがって、netupvim を Vim.exe と同じフォルダに展開し、使用してみたところ途中でエラーが発生してしまいました><。

環境

  • Windows7 Professional 32 bit
  • Vim.exe は C:¥Program Files¥vim74-kaoriya-win32 に配置
  • このフォルダに netupvim 1.0 の中身を展開した。

“【Vim】【Windows7】権限不足で netupvim が使用できなかった問題を解決”の続きを読む

【Vim】マークダウンのシンタックスハイライトをどんなファイルでも好きなタイミングで有効にする手順

Vim を使用している時に、テキストファイルですけれども、マークダウン記法で記述する機会がございました。マークダウンのシンタックスハイライトをしたいと思いましたの。

そもそもマークダウンのシンタックスハイライトが Vim には含まれていないようでしたので導入と、好きなタイミングで自由にシンタックスハイライトを切り替える方法についてまとめました♪

環境

  • Windows7 Professional 32 bit
  • GVim

マークダウンのシンタックスハイライトを導入

“【Vim】マークダウンのシンタックスハイライトをどんなファイルでも好きなタイミングで有効にする手順”の続きを読む

【Vim】【Windows】_gvimrc、_vimrc の置き場所をユーザーの設定ファイルを置く場所に変更しました♪

今まで

  • グローバルな設定ファイル格納場所に置いていた。
  • gvim.exe のあるフォルダ(Kaoriya 版 Vim)
    C:¥Program Files¥vim74-Kaoriya-win32¥

変更後

  • 個人の設定ファイル格納場所に移動した。
  • C¥:Users¥username¥

“【Vim】【Windows】_gvimrc、_vimrc の置き場所をユーザーの設定ファイルを置く場所に変更しました♪”の続きを読む

【Mac】Dock に Vim のショートカットを作る

Mac(OS X Yosemite)で Dock に Vim のショートカットを作った手順

  1. vim の場所を調べる。ターミナルを起動し、「whereis vim」で調べる。「/usr/bin/vim 」だった。
  2. Finder で /usr/bin/ にアクセスする。移動 > フォルダへ移動…(command + shift + g) を使う。
  3. ファイル vim を Dock にドラッグ。ゴミ箱近くの、区切り線よりも右側に置く。

Yosemite と書きましたけれども、どのバージョンでも手順に大差ないかと存じます。

ちなみに、わたくしたちの Mac は MacBook Pro (Retina, 13-inch, Late 2012) ですの。

“【Mac】Dock に Vim のショートカットを作る”の続きを読む

【Vim】マクロの具体的な使い方。HTMLタグ内のゴミを削除しましたの♪

Vim でのマクロ使い方まとめ

マクロの記録

  1. qa (a 〜 z のどれでもよい)で記録開始。ステータス行に「recording」と表示されることを確認
  2. 操作を行う
  3. q で記録終了

マクロの実行

  • マクロの実行に失敗した時点で、処理は中断される
  • @a (a 〜 z の記録したものをタイプ)
  • @@ ← 前回と同じマクロを実行
  • 10@a ← 10回「a」マクロを実行。マクロを直列に実行する。

マクロを並列に実行

  1. V でビジュアルモードに入り、マクロを実行したい行を選択する。
  2. :'<,’>normal @a を実行。「'<,’>」は「:」をタイプした時点で自動的に入力される。

Vim マクロの使い方実践!

次のテーブル HTML のゴミ部分を削除したいですの!ゴミ部分とは、たとえば「data-sheets-value=”[null,2,&quot;2:&quot;]”」ですわ。

<table dir="ltr" border="1" cellspacing="0" cellpadding="0"><colgroup> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /></colgroup>
<tbody>
<tr>
<td data-sheets-value="[null,2,&quot;2:&quot;]">2:</td>
<td data-sheets-value="[null,3,null,2]">2</td>
<td></td>
<td></td>
</tr>
<tr>
<td data-sheets-value="[null,2,&quot;3:&quot;]">3:</td>
<td data-sheets-value="[null,3,null,3]">3</td>
<td></td>
<td></td>
</tr>
<tr>
<td data-sheets-value="[null,2,&quot;5:&quot;]">5:</td>
<td data-sheets-value="[null,3,null,5]">5</td>
<td></td>
<td></td>
</tr>
<tr>
<td data-sheets-value="[null,2,&quot;7:&quot;]">7:</td>
<td data-sheets-value="[null,3,null,7]">7</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

他の部分とも比べてみますと、次の条件を満たす行を削除したいと言い換えられますの♪

  • 「 data-sheets-value」(先頭は半角スペース)が含まれる行
  • 「 data-sheets-value」から「”」で閉じられた部分までがゴミ
  • 「”」は同じ行に2つあるため、1つ目までと早合点しないように注意

上記条件を満たすマクロを考え、記録し、対象を選択して実際に実行してみますの♪

マクロにゴミ削除の操作を記録いたします♪

次のようにマクロに記録させますわ♪ポイントは、ビジュアルモードで選択するときは左から右に記録するのではなく、逆に右から左へ選択することで「”」の検索を1回だけに抑えたところでしょうか。

※追記:あとでよくよく考えてみますと、最初に「”」を検索しますので、「”」が有り、かつ「data-sheets-value」が無い行でマクロを実行しますとバッファ全体の最後から後方検索されますの。結果意図しない部分が選択されてしまいますわ><。バグのあるマクロ。。。><。

ゴミが含まれる行にカーソルを移動してから記録開始ですの♪

  1. qa
  2. $F”v?data-sheets-value<CR>hx
    $ → 行末へ移動
    F” → 左方向の「”」へ移動
    v → ビジュアルモード開始
    ?data-sheets-value<CR> → 「data-sheets-value」を後方検索
    h → 左へカーソル1つ移動
    x → ビジュアルモードで選択した部分を削除
  3. q

これで「a」にマクロが記録されましたと同時に、マクロの記録のために操作した行でゴミが削除されましたの。

コードの対象行を選択してマクロを並列に実行!

ゴミの対象行を選択いたしましてからマクロを実行しますと選択した行全てが対象となりますの♪一気に処理できますので、大変楽ですわ♪

しかも!、間にゴミが含まれない行を選択してしまっても大丈夫!ゴミの無い行だけマクロが実行されず、前後のゴミのある行だけマクロが実行されますの!

例の2行目にカーソルを移動しまして次の操作を実行ですの!

  1. VG
  2. :'<,’>normal @a

ですから、マクロの処理が実行される行をこちらで決める必要がないようにできる点が、並列にマクロを実行する時の利点と言えますわね。

逆に、対象となる行が無くなったら以降の処理を止めたい場合はマクロの並列処理は使ってはいけませんわね!

おわりに

Windows のサクラエディタで初めて「マクロ」というものを知りました。

それまでエクセルマクロなどの名前やそれでできることなどを風の便りに聞きましたので、何かのログファイルから必要な物を抽出し、不要な部分を削除するのに使ってみましたのが始まりでしたわね。

感動いたしましたの!

13インチ MacBook Pro Retina にしてからは、予めインストールされている Vim を使用しております。。。マクロってあるのかしら?いいえ、きっとございますわね!という気持ちで探しましたらやっぱり!

この本には大変助けられましたの♪ありがとう存じます。

複数行を選択して、一度に各行に対してマクロを実行!なんてこともできますのね♪サクラエディタにはなかった(もしくはわたくしたちは気づけなかった)機能ですの♪素敵!

以上です。