読者です 読者をやめる 読者になる 読者になる

jEditのConsoleプラグインを便利に使う

jEdit

jEditのConsoleプラグインは、OSネイティブなコマンドラインシェルをjEditに統合します。編集中のコードをコマンドラインで簡単にテストしたり、対話を必要としないコマンドラインツールを実行するのに便利です。Windowsならファイル名をタイプ(たぶんMacではopenに続けてファイル名をタイプ)するだけで、関連付けられたエディタプログラムが動かせます。

ただ…、コマンドラインでいつも面倒なのは、キータイプでカレントディレクトリを作業場所まで移動させる操作です。ProjectViewerで管理していれば、自動で同期してくれるのですが、それすら面倒で(^^;
と、ちょっとした面倒が嫌で、入っているのにあまり使わなかったConsoleプラグインだったのですが、最近になっていいショートカットを見つけました。

編集中バッファのディレクトリに移動

cd ${d}

ファイルシステムブラウザの現在ディレクトリに移動

cd ${BROWSER_DIR}

編集中バッファのファイルを、インタプリタhogeで実行

hoge ${f}

${f}指定だと、バッファを切り替えて "Run last command" ボタンをクリックしたとき、切り替えた後のバッファを同じプログラムで開いてくれます。"Run last command"をキーボードショートカット(たとえばCtrl+F12)に登録しておけば、マウス操作もフォーカス移動もなしに、

  1. コードを書く
  2. Ctrl ↓
  3. S ↓↑ (保存)
  4. F12 ↓↑ (実行)

の反復だけで作業できます。

「バッファを保存して最後のコマンドを再実行」みたいなマクロを書いておき、それを単独のファンクションキーに割り当てておくなんていう手もありますね。

ファイルシステムブラウザの現在ディレクトリに移動するさい、BROWSER_DIRっていうつづりすら面倒な人向けには、こんなマクロもありです。

runInSystemShell(view, "cd ${BROWSER_DIR}");

runInSystemShellは、マクロからConsoleのシェルにコマンド行を送るための拡張で、jEditのみで使えるグローバルなシェルスクリプトって感覚で、いろいろできそうです。

まあ、綺麗にマクロらしく書くと、こうなるかな。

バッファのディレクトリに移動.bsh

runInSystemShell(view, "cd \"" + buffer.directory + "\"");

ブラウザのディレクトリに移動.bsh

browser = view.dockableWindowManager.getDockable("vfs.browser");
runInSystemShell(view, "cd \"" + browser.directory + "\"");

直接は関係ないですが、エクスプローラ(人によっては違うファイルマネージャに書き換え可能)でフォルダを開くマクロはこうなります。

バッファのディレクトリをエクスプローラで開く.bsh

//カスタマイズ可能
fileman_command  = "explorer.exe /n,/e,/select,\"%TARGET_PATH%\"";

java.lang.Runtime.getRuntime().exec(
    fileman_command.replace("%TARGET_PATH%", buffer.path)
);

ブラウザのディレクトリをエクスプローラで開く.bsh

//カスタマイズ可能
fileman_command  = "explorer.exe /n,/e,\"%TARGET_PATH%\"";

browser = view.dockableWindowManager.getDockable("vfs.browser");
java.lang.Runtime.getRuntime().exec(
    fileman_command.replace("%TARGET_PATH%", browser.directory)
);

あ、もちろん、Consoleのシェルから

explorer ${d}

でもいいんだけどね。

以前書いたこのマクロをなくしたので、jEditプラグイン ExplorerHereのアルファ版 - なんたらノート 第二期を使ってたんですが、書き直せたのでもういいや。