Pythonとサクラエディタとわたし

今日はあまり麻雀と関係ないしょうもない小ネタを日記調で書いていきます。(筆者 nisi)

最近、新作のネタのために、久々にPythonを引っ張り出してみました。それはそれで、着々と成果が出始めているので、その話は別の機会にするとして、今日はPythonのコーディングについて、思ったことです。

Pythonと言えば、インデントルールがあるのですが、例えば、下のような何十行~何百行の長文処理があったとします。

def testfunc():
   #長文処理はじめ
   hogehoge1()
   fugafuga1()
   hogehoge2()
   fugafuga2()
   …
   hogehoge99()
   fugafuga99()
   #長文処理おわり


何かの関数内の長文処理で、インデントが1回(半角スペース4個分)でつらつらとコードを書いていったとします。ところが、途中で条件分岐を入れたくなったとします。すると、さきほどのコードをこういうコードに変えたいわけです。


def testfunc(nanikanoflagdesuyo):
   if nanikanoflagdesuyo:
       #長文処理はじめ
       hogehoge1()
       fugafuga1()
       hogehoge2()
       fugafuga2()
       …
       hogehoge99()
       fugafuga99()
       #長文処理おわり   


if文の中に長文の処理が入ったので、インデントが1個増えます。

このように条件分岐を加える変更するにあたっては、ふつうなら2行目のif文だけ書いたうえで、コピーして貼り付けといきたいところですが、私のエディタの環境(Visual Studio 2017)だと、そのままコピーして貼り付けるとこのようになります。


def testfunc(nanikanoflagdesuyo):
  if nanikanoflagdesuyo:
  #長文処理はじめ
  hogehoge1()
  fugafuga1()
  hogehoge2()
  fugafuga2()
  …
  hogehoge99()
  fugafuga99()
  #長文処理おわり


つまり、インデントを1個増やして階層を1個深くしたいのに、ふつうにコピー&ペーストすると、いつものVB.NETみたいに、インデントが自動でついてくれないので、しょうがなく長文処理を1行ずつタブとかスペースキー連打とかで人力でインデントをつけていたのですが、これが何百行とかになると、とてもじゃないけどやってられないと。

なんとかうまい方法はないものかと思案していたところ、ちょっと前に入れたサクラエディタというテキストエディタならマクロが使えるので、うまいことやればインデント処理を自動でできるんじゃない?と思いつきました。

・やり方

(1)C:\Users\〇〇〇\AppData\Roaming\sakuraに「indent_tuika.js」というファイルを作り、その中に次のコードを書く。


var iLine = 0;
var iCount = 0;
var iMax = GetLineCount(0);	//論理行数を取得
while (++iLine <= iMax){	//全行をループ
  MoveCursor(iLine,1,0);
  InsText("    ");
}


(2)サクラエディタを開く。設定→共通設定→マクロタブで、てきとうな名前と先ほどのjsファイルを選択し、設定ボタンを押す。→OKボタン


(3)インデントを増やしたいコードをサクラエディタにコピペして、先ほどのマクロを実行。


(4)めでたくインデントが1個分増えたので、VisualStudioにコピペしなおす。→完成!


また、ひとつかしこくなれたお。(*'ω'*)

なお、インデントを1回減らしたい場合(If文やFor文の外側に出したい場合に相当)は次のようなjsファイルを作って同様にマクロを実行すればよいです。


var iLine = 0;
var iCount = 0;
var iMax = GetLineCount(0);	//論理行数を取得
while (++iLine <= iMax){	//全行をループ
  MoveCursor(iLine,1,0);
  Delete(0);
  Delete(0);
  Delete(0);
  Delete(0);
}

この記事が気に入ったらサポートをしてみませんか?