bash-supportプラグインでVimをBashスクリプト開発用IDEに変える方法

本記事は「Vi / Vim Tips and Tricks」シリーズの一環としてお届けします。Linuxシステム管理者やプログラマーの方なら、Bashシェルスクリプトを書く際に、次のような繰り返し作業に手間取った経験があるのではないでしょうか。
- ファイルヘッダーの追加
- 関数やフレームコメントの記述
- 定型的なコード断片(スニペット)の挿入
- 構文チェックの実行
- 関数に関するドキュメントの参照
- コードブロックのコメント化、およびコメント解除
「bash-support」Vimプラグインを使えば、これらの作業をすべて簡単かつ迅速に行えます。キーストロークを大幅に削減でき、貴重な時間の節約につながるでしょう。
このプラグインはFritz Mehner氏によって開発されたもので、作者自身はその目的を「メニューとホットキーを使ってBASHスクリプトを書き、実行する」と説明しています。
本記事では、わずか3ステップで完了するインストール手順と、覚えておきたい8つの強力な機能を詳しく解説します。
bash-supportプラグインをインストールする3ステップ
ステップ1:bash-supportプラグインをダウンロードする
まず、vim.orgの公式サイトからプラグインをダウンロードします。
$ cd /usr/src $ wget -O bash-support.zip https://www.vim.org/scripts/download_script.php?src_id=9890
ステップ2:bash-support Vimプラグインをインストールする
$ mkdir ~/.vim # ディレクトリがまだ存在しない場合のみ実行 $ cd ~/.vim $ unzip /usr/src/bash-support.zip
ステップ3:~/.vimrcでプラグインを有効化する
Vimエディターでプラグインを有効にするため、~/.vimrcに以下の1行を追加します。
$ vim ~/.vimrc filetype plugin on
Bash Vimプラグインの8つの強力な機能
機能1:*.shファイルへのヘッダー自動挿入
拡張子.shのファイルを開くと、以下のようなヘッダー付きでファイルが作成されます。同時にカーソルは挿入モードで「DESCRIPTION」欄に置かれるため、すぐに説明文を書き始められます。
#!/bin/bash #============================================================ # # FILE: myscript.sh # # USAGE: ./myscript.sh # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: (), # COMPANY: # VERSION: 1.0 # CREATED: 02/14/09 15:42:08 IST # REVISION: --- #============================================================
AUTHORやCOMPANYのデフォルト値を変更したい場合は、~/.vimrcに以下の行を追加してください。
let g:BASH_AuthorName = 'SathiyaMoorthy' let g:BASH_Email = 'subscribe@thegeekstuff.com' let g:BASH_Company = 'Open Source Corporation'
これで新しいBashスクリプトファイルを作成すると、変更後のAUTHORとCOMPANYの値が反映されたヘッダーが表示されます。
#!/bin/bash #============================================================ # # FILE: myscript.sh # # USAGE: ./myscript.sh # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: SathiyaMoorthy (), subscribe@thegeekstuff.com # COMPANY: Open Source Corporation # VERSION: 1.0 # CREATED: 02/14/09 15:39:58 IST # REVISION: --- #============================================================
補足: ヘッダーに独自の項目を追加したい場合は、~/.vim/bash-support/templates/bash-file-header ファイルを編集して、任意のフィールドを追記できます。
機能2:\sfuでBash関数を追加する
サブルーチン(関数)を書きたいときは、ノーマルモードで\sfuと入力します。関数名の入力を求めるプロンプトが表示され(図1)、名前を入力するとデフォルトの雛形を持つサブルーチンが自動的に挿入されます(図2)。

図1: \sfuと入力してシェルスクリプト内にBash関数を追加

図2: シェルスクリプト内に自動挿入されたBash関数
機能3:\cfuで関数ヘッダーコメントを挿入する
関数の説明コメントを挿入するには、ノーマルモードで\cfuと入力します。図3のような整形されたコメントブロックが表示されます。

図3: \cfuと入力してシェルスクリプト内に関数ヘッダーを挿入
機能4:\cfrでフレームコメントを追加する
枠線付きのフレームコメントを追加するには、ノーマルモードで\cfrと入力します。図4のように整形されたコメントが挿入されます。

図4: \cfrと入力してシェルスクリプト内にフレームコメントを挿入
機能5:ショートカットキーでBashステートメントを挿入する
各種ステートメントを挿入するためのショートカットキーは以下の通りです。
- \sc: case … esac
- \sl: elif then
- \sf: for in do done
- \sfo: for ((…)) do done
- \si: if then fi
- \sie: if then else fi
- \ss: select in do done
- \st: until do done
- \sw: while do done
- \sfu: function
- \se: echo -e "\n"
- \sp: printf "\n"
例えば\scと入力すると、caseステートメントが挿入され、カーソルは挿入モードでcase文の直後に置かれます(図5)。同様に、上記のショートカットキーを使えば対応するステートメントを素早く呼び出せます。

図5: \scと入力してBashシェルスクリプト内にcaseステートメントを挿入
機能6:\nrで定義済みコードスニペットを挿入する
コードスニペットは\nrで読み込み、\nwで書き出すことができます。プラグインには最初からいくつかの定義済みスニペットが付属しており、すぐにコードへ組み込めます。付属のスニペット一覧は次の通りです。
$ ls -1 ~/.vim/bash-support/codesnippets/ assert basename+pathname basename-function check-number-of-command-line-arguments create-tempfile create-tempfile-with-trap free-software-comment read-and-split-into-array timestamp usage-and-command-line-arguments.noindent use-file-descriptor-read use-file-descriptor-write well-behaved-script
例えばcheck-number-of-command-line-argumentsスニペットを挿入するには、\nrを押してファイル名を尋ねられたら「check-number-of-command-line-arguments」と入力します。すると以下のコードが自動的に挿入されます。
#-----------------------------------------------------------------------
# Check number of command line arguments
#-----------------------------------------------------------------------
if [ $# -lt 1 ]
then
echo -e "\n\tUsage: ${0##/*/} File\n"
exit 1
fi
補足: 独自のコードスニペットを作成して~/.vim/bash-support/codesnippets/に保存することも可能です。既存のコードからスニペットを作るには、スニペット化したい部分を選択して\nwを押し、任意のファイル名を指定します。次回から\nrとファイル名を入力すれば、自分専用のスニペットをいつでも呼び出せます。
機能7:Bashビルトインコマンドのクイックヘルプを表示する
Bashビルトインコマンドのヘルプページを読みたいときは、カーソルをその単語に合わせて\hhと入力します。
次の例(図6)では、readビルトインコマンド上で\hhと入力し、readコマンドのクイックヘルプを表示しています。同じ方法で、すべてのBashビルトインコマンドのヘルプを即座に確認できます。

図6: \hhと入力して選択中のBashビルトインコマンドのヘルプを表示
機能8:キーワードコメントの挿入
以下のコマンドで、対応するキーワード付きのコメント行を追加できます。例えば\ckbと入力すると、BUGコメント行がシェルスクリプト内に挿入されます。
- \ckb: キーワード「BUG」
- \ckt: キーワード「TODO」
- \ckr: キーワード「Tricky」
- \ckw: キーワード「WARNING」
\cktと入力すると、「# :TODO: mm/dd/yy:: 」という形式のTODOコメント行が追加されます。これは後で対応したいタスクを書き留めておくためのコメント行で、作業漏れの防止に役立ちます。

図7: \cktと入力してBashシェルスクリプト内にTODOを追加
bash-supportプラグインには、ここで紹介した以外にも多くの強力な機能が備わっています。詳細はドキュメントを参照してください。ドキュメントはシステム内の以下の場所にあります。
- README:~/.vim/README.bashsupport
- PDF:~/.vim/bash-support/doc/bash-hot-keys.pdf
- オンライン版bash-support Vimプラグインドキュメント
- プラグインにはヘルプファイル(bashsupport.txt)が付属しており、:h bashsupportで閲覧できます
- [ :helptags ~/.vim/doc でヘルプタグを生成してから、:h bashsupport を実行 ]
- このプラグインの追加スクリーンショット
おすすめの関連書籍
Ramesh Natarajan著『Vim 101 Hacks』。筆者はコマンドラインが大好きで、当然ながらViとVimエディターの熱心なファンでもあります。何年も前にLinux上でC言語のコードを大量に書いていた頃は、入手できるすべてのVimエディターのTipsやトリックを読み漁っていました。そうした経験をもとに執筆したのが電子書籍『Vim 101 Hacks』で、Vimの高度な機能に関する101の実践例を収録し、Vimエディターでの作業速度と生産性を高められる内容になっています。ViやVimを何年も使っている方でも、まだこの本を読んでいないなら、ぜひ一読をおすすめします。Vimエディターの驚異的な能力にきっと驚かされるはずです。
-
PowerToysでWindows 10のキーを自由に再マッピング!作業効率アップの設定方法
Windows 10でキーボードショートカットを別のものに変更したいと思ったことはありませんか?以前は、キーやショートカットの再割り当て(リマップ)には、扱いにくいサードパーティ製アプリをダウンロードする必要がありました。しかし今では、Microsoftが提供する無料ツール「PowerToys」を使えば、キーボード上の任意のキーを別のキーとして動作させたり、ショートカットキーそのものを再割り当てしたりすることが、格段に簡単に行えるようになりました。 任意のキーを再マッピングする手順 PowerToysを使えば、どのキーも別のキーに簡単に割り当て直すことができ、ショートカットキーの組み合わせを変
-
MacBookトラックパッドジェスチャー8選|仕事をもっと快適にする便利ワザ
Windowsと比べてMacは実直なパソコンというイメージを持たれがちですが、だからといってMacBookの操作が退屈だというわけではありません。スクロール、右クリック、左クリックといった基本的なトラックパッド操作は、すでに皆さんご存じのことでしょう。ところが実は、MacBookのトラックパッドには見た目以上のポテンシャルが秘められており、多彩なジェスチャー操作が搭載されています。これらはスマートフォンなどのタッチスクリーン端末の操作感によく似ており、MacBookの使い心地をぐっと快適にしてくれるものばかりです。ここでは、日常の作業で実際に役立つ、MacBookの便利なトラックパッドジェスチ