文とスニペット
例えばif-else文をスクリプトに付け加えたい場合には、if-else文を手動で一文字ずつ入力することもできるが、Bash Supportがあらかじめ用意している文から選択することで手軽に入力することもできる。Bash→Statements(文)を実行すると、あらかじめ用意された文を選択するための長いリストが表示される。そのようにあらかじめ用意されている文は、選択して挿入したら必要な場所を埋めるだけで利用することができる。したがって例えばwhile文を挿入したいときには、Bash→Statements(文)→whileを実行すると以下のようなコードが挿入される。
while _; do done
なおカーソルは上記の例のアンダースコア(_)の所に移動する。つまり後は、判定用の文とwhile文の中で実行したいコードの本体を追加すれば良いだけだ。もちろんBash Supportがそれらもすべて追加してくれれば有難いが、それはIDEができる手助けの限界を超えている。
とは言え、自分のための手助けを自分でしておくことはできる。頻繁にbashスクリプトを作成する人は、新しいスクリプトの中で再使用するための関数やコードスニペットを持っていることだろう。Bash Supportでは、スニペットとして保存したい部分のコードをハイライトしてBash→Statements(文)→write code snippet(コードスニペットの作成)を実行することで、ハイライトした部分をスニペット集に追加することができる。そしてすでに書いたコードを利用したいときには、Bash→Statements(文)→read code snippet(コードスニペットの読み込み)を実行すれば良い。なおBash Supportにはいくつかのコードスニペットが最初から付属している。
またコードスニペットをスニペット集に追加する別の方法としては、単に、スニペットが入ったテキストファイルを~/.vim/bash-support/codesnippetsディレクトリの下に置くという方法もある。
スクリプトの実行とデバッグ
スクリプトの作成が終わったら、次はテストとデバッグだ。Vimから抜けてスクリプトを実行可能にし、スクリプトを実行してバグがあるかどうかを確かめ、スクリプトを編集するために再びVimに戻るという方法もあるが、これは単調で退屈な作業だ。Bash Supportを使用すれば、Vimの中にいたままテストを行なうことができる。
スクリプトを実行可能にするには、Bash→Run(実行)→make script executable(スクリプトを実行可能にする)を実行するだけで良い。またスクリプトを保存して実行するには、Ctrl-F9を入力するか、またはBash→Run(実行)→save + run script(スクリプトを保存して実行)を実行すれば良い。
Bash Supportではまた、bashdb(bashデバッガ)をVimの中から直接的に呼び出すことができる。Ubuntuではデフォルトではbashdbがインストールされていないが、apt-get install bashdbを実行するだけで簡単にインストールすることができる。bashdbをインストールした後は、F9を入力するか、またはBash→Run(実行)→start debugger(デバッガの起動)を実行することで、作成中のスクリプトをデバッグすることができる。
また、スクリプトのハードコピー(PostScriptのプリントアウト)が必要になったときには、Bash→Run(実行)→hardcopy to FILENAME.ps(FILENAME.psにハードコピーする)を実行することで生成することができる。この機能に関しては、Bash Supportはbashスクリプトに限らずどのようなタイプのファイルについても役立つだろう。この機能を使うと、Vimで編集中のあらゆるファイルのPostScriptの出力を生成することができる。
Bash Supportにはその他にも、Vimの中からスクリプトを実行してテストする際に役立つ機能がある。そのような便利な機能の一つに構文チェックがあり、Alt-F9を入力して実行することができる。構文チェックを実行すると、構文エラーがない場合にはすぐにOKが表示され、問題がある場合には、Vimの画面の下の方に小さなウィンドウが表示されて、そこに構文エラーの一覧が表示される。そのウィンドウでエラーをハイライトしてEnterを入力すれば、エラーのある行へ移動することもできる。
リファレンス本いらず
スクリプトに正規表現や判定条件を入れなければならないのに、正確な文法を思い出せないという嫌な経験をしたことはないだろうか?Bash Supportを使用すればそのようなことは問題とならない。というのも、必要なことはすべてRegex(正規表現)メニューとTests(判定条件)メニューで用意されているためだ。例えば、ファイルが存在していて、かつ、シェルを実行したユーザの実効ユーザIDで所有されているかどうかを確かめる必要がある場合には、Bash→Tests(判定条件)→file exists and is owned by the effective UID(ファイルが存在し、かつ、実行中のシェルの実効ユーザで所有されている)を実行する。するとBash Supportが適切な判定条件([ -O _])を挿入して、ファイル名を入力すべき場所にカーソルを移動する。
正規表現を手早く作成するためには、BashメニューからRegex(正規表現)を選択して、リストから適切な正規表現を選択すれば良い。「0個または1個の」というような条件やその他の正規表現を正確にどう表現するのかを思い出せないときなどにかなり便利だ。
さらにBash Supportには、環境変数やbashの組み込みコマンドやシェルのオプションなどのためのメニューもある。
ホットキーのサポート
ホットキーを使用してBash Supportの機能の多くを利用することもできる。メニューのクリックほど簡単ではないものの、ホットキーはルールに従って決められているので簡単に覚えることができる。例えばコメントに関する機能はすべて\cを入力するようになっているので、ファイルのヘッダを挿入するには\ch、日付を挿入するには\cd、行末コメントを挿入するには\clを入力すれば良い。
また文の挿入については\aを使用するようになっていて、例えばcase文の挿入には\ac、if then else文の挿入には\aie、for in... 文の挿入には\afを入力する。なおオンライン文書はこのことに関して間違っていて文のホットキーは\sから始まるとしているが、Bash Supportに付属しているPDFのリファレンスカード(.vim/bash-support/doc/bash-hot-keys.pdf)には正しく記載されている。
実行に関するコマンドには\rを使用する。例えばスクリプトを保存して実行するには\rr、スクリプトを実行可能にするには\re、デバッガを起動するには\rdと入力する。この記事ですべてのショートカットを紹介することはできないが、Vimで:help bashsupport-usage-vimを実行してリファレンスを参照するか、または付属のPDFを利用すると良いだろう。Bash Supportの完全なリファレンスは、Vimで:help bashsupportを実行するか、またはオンラインで読むことができる。
当然ながら、ここで紹介したのはBash Supportの機能のほんの一部だ。次にシェルスクリプトを書くときには、是非Bash SupportをインストールしたVimを利用してみて欲しい。bashでのスクリプティングが非常に楽になるはずだ。
NewsForgeでは毎週月曜日に異なる拡張/プラグイン/アドオンを紹介している。使用しているツールの紹介とその効果、そして上手に使いこなすためのヒントなどについて1,000ワード以下の記事を執筆していただければ、採用された方にはもれなく100ドルをお支払いする。なお、同じテーマがすでに最近取り上げられていたり掲載予定になっていないか、まずは確認のメールを送ってきてほしい。
