emacsのsh-scriptパッケージを使ってみる

emacsでシェルスクリプトのファイルを開いた際に動作するsh-scriptパッケージの使い方をまとめました。


1 sh-scriptとは

emacsでシェルスクリプトを編集するためのモードです。emacs24ではすでに組み込まれています。

sh-script  2.0.6  built-in  shell-script editing commands for Emacs

.shの拡張子を持つファイルを開くか、M-x sh-modeで起動します。

2 .emacsの設定

sh-scriptで用いる変数を設定します。

(setq sh-basic-offset 2)
(setq sh-indentation 2)
(setq sh-shell-file "/bin/sh")

sh-basic-offsetとsh-indentationはインデントの変数です。

 

sh-shell-fileはシェバングに記載するシェルの変数で、設定しない場合、シェバング編集の際に環境変数SHELLの値が用いられます。

環境変数SHELLのシェルに特化したスクリプトを書く場合は設定の必要はありません。

3 ショートカット

個人的に使用しているショートカットを記載します。

ショートカットを用いた後、変数名や条件文を入力が促されます。

例えば、C-cキー C-wキーでwhile文を作成した場合は以下が表示され、while文の条件文を入力します。

condition: [  ]

3.1 実行に関するショートカット

実行に関するショートカットは以下の通りです。

 

C-cキー :キー シェバング編集と実行権限の付与
C-cキー xキー シェルスクリプトの実行
C-M-xキー 選択したリージョンのシンタックス実行

 

リージョンの選択はコピーアンドペーストでC-spaceを用いるのと同じ方法です(環境によってはC-M-space)。

https://dl-web.dropbox.com/s/0zinvz7txp5ln5g/0001_Region.png

3.2 シンタックスに関するショートカット

シンタックスに関するショートカットは以下の通りです。

 

C-cキー C-wキー while文
C-cキー C-iキー if文
C-cキー C-cキー case文
C-cキー C-fキー for文
C-cキー +キー `expr $v + 1`のインクリメント文

 

3.3 一時ファイルに関するショートカット

一時ファイルを作成するショートカットは以下の通りです。一時ファイル作成だけでなく、trap文で一時ファイルを削除します。

 

C-cキー C-tキー mktempを用いた一時ファイルの作成