2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

秀丸エディタでshebangに応じて強調表示切り替え

Last updated at Posted at 2015-06-09

背景

「シェルスクリプトを書いて自前のコマンドを作りたい」誰もが抱く、人間の根源的な願望です。

shebang(1行目の#!/bin/bashなど)を書いておけば拡張子が.shでなくてもbashで実行されるので、

  1. コマンドっぽいファイル名にして
  2. 実行権限を付与して
  3. パスの通ったディレクトリに置いておく

これで自作のコマンドが作れます。

適当なファイル名をつけて、秀丸エディタで開いて...
あれ?いつも使っているシェルスクリプト用のファイルタイプ別設定が有効にならない?

秀丸エディタは「シェルスクリプトかどうか」を拡張子で判別しているので、これはまったく当然の動作です。

対処方針

秀丸エディタでファイルを開いた時、拡張子で判別不可 & shebangが書かれている 場合、
シェルスクリプト用のファイルタイプ別設定を使う。

という秀丸マクロを用意します。

マクロ作成

あらかじめ、シェルスクリプト用のファイルタイプ別設定はShellScriptという名前で登録しておきます。
以下のマクロで設定を切り替えます。

// shebangを解釈する

// 先頭行の文字列を取得
moveto 0,0;
$LINE = gettext(0,0,linelen2,0,1);

if( currentconfigset == "" ){
	// ファイルタイプ別設定が空(=共通設定)の場合のみshebangをチェック
	if ( $LINE == "#!/bin/bash" ) {
		// とりあえず暫定的に完全一致のみ見ている 改善の余地があるかも
		// 一時的な設定 として"ShellScript"を適用する
		configset "ShellScript", 0;

	}else if ( $LINE == "#!/bin/sh" ) {
		configset "ShellScript", 0;

	}
}

とりあえず#!/bin/bash#!/bin/shだけ対処しました。

マクロ登録

これを秀丸エディタで以下に登録します。

メニュー>マクロ>マクロ登録>自動起動>ファイルを開いた直後

これで自作コマンド作りが捗りますね。

補足

新しくshebangを書いたファイルは一度開き直さないとファイルタイプ別設定が有効になりません。
ファイル保存時に自動起動するマクロも登録できるので、そちらに登録しても良いかも。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?