とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

秀丸エディタでPythonを実行するマクロ

秀丸エディタPythonを実行するマクロを書きました。

特徴

ファイル(.py)に保存する必要がないので、思いついたときにPythonコードを実行することが出来ます。
もちろん、ファイルに保存してあっても動作します。

動作環境

秀丸エディタver8.20 b14で動作を確認。
ver8以降なら動くはずです。

インストール方法

cmd_python.mac秀丸のマクロディレクトリへコピーしたらキーアサインして下さい。
あと、Pythonはインストールしておいて下さい。

その1

その2

その3

その4


Pythonバージョン

Python 2/3系で動作を確認しています。
Pythonのバージョン切り替えはマクロ冒頭の $g_exe 変数を編集して下さい。

//python.exe へのパス
$g_exe	= "python.exe";
//$g_exe	= "C:\\Python26\\python.exe";
//$g_exe	= "C:\\Python27\\python.exe";
//$g_exe	= "C:\\Python32\\python.exe";

マクロの内側

文字コード

Pythonは以下のように文字コードを明示する必要があります。

# -*- coding:utf8 -*-
print u"にほんご"

毎回記述するのは面倒なので秀丸マクロ側で補っています。

リダイレクト

あと、Pythonはリダイレクトすると下記エラーメッセージが出力されます。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

マクロ側で補っていること(文字コード+リダイレクト)

このエラーが出力されないように秀丸マクロ側で補っています。
何をやっているかというとコード先頭に定型処理を挿入しているだけです。

元のコード
print u"にほんご"
秀丸マクロで補った結果
# -*- coding:utf8 -*-
import sys, codecs
sys.stdout = codecs.getwriter('cp932')(sys.stdout)
del sys, codecs
print u"にほんご"

副作用としてはエラー出力時の行番号がずれることです。。。まあ正確さよりも利便性を優先しています。
文字コードの取得は秀丸マクロのプロパティから取得しています。(一応、中国語、韓国語も対応したつもりですが、動作検証は行っていません。)

まとめ


初めてのPython 第3版

初めてのPython 第3版

秀丸スーパーライセンスパック [ダウンロード]

秀丸スーパーライセンスパック [ダウンロード]