利用環境
秀丸エディタ 32bit Ver8.89 (2020/1/20時点最新)
RubyEval for 秀丸マクロ Ver.0.02
概要
筆者は、25年らいの秀丸エディタのユーザーだ。
今は、フリーでも同等機能のエディタがあるらしいし、unix畑の人はViライクをお使いであろうか
さて、上でRubyEval for 秀丸マクロ Ver.0.02は、2005年に公開されたマクロで15年前のものであるが
いまだ現役バリバリに愛用させていただいている。
秀丸エディタ上で選択した文字列を、Rubyのソースコードロジックで変換して返す
いろいろ応用範囲が広い。
是非、秀丸ユーザーには使ってみて欲しい
いくつかサンプルを紹介する。
ソースコード例
重複行を削除して排除、ユニーク行をゲットする 秀丸連携
#-------------------------------------------------------------------------------
# 重複行を削除して排除、ユニーク行をゲットする 秀丸連携
# uniqueGet.rb
#-------------------------------------------------------------------------------
unless $HIDEMARU_MACRO
#非秀丸テスト時 ヒアドキュメントを利用
from_hide = <<-ENDOFSRC
テスト-----------------M
テスト-----------------M
aaa
bbb
bbb
aaa
ccc
ENDOFSRC
else
from_hide = $RUBY_EVAL_INSTR
end
#秀丸から受け取った文字列を、改行ごとに、Arrayへ格納
ary = Array.new
ary = from_hide.split(/\n/)
#重複管理Array
uniqueAry = Array.new
#リターン
out_hide = ""
#重複しない行のみ、out_hideへ格納 (改行も)
ary.each{ |str|
unless uniqueAry.index(str)
out_hide = out_hide + str + "\n"
#重複管理へ格納
uniqueAry.push(str)
end
}
unless $HIDEMARU_MACRO
#非秀丸テスト時 print確認
print out_hide
else
#最後に評価した文字を返す
out_hide
end
上記とは逆、重複行を取得 秀丸連携
#-------------------------------------------------------------------------------
# 重複行取得 秀丸連携
# duplicationGet.rb
#-------------------------------------------------------------------------------
unless $HIDEMARU_MACRO
#非秀丸テスト時 ヒアドキュメントを利用
from_hide = <<-ENDOFSRC
テスト-----------------M
テスト-----------------M
aaa
bbb
bbb
aaa
ccc
ENDOFSRC
else
from_hide = $RUBY_EVAL_INSTR
end
#秀丸から受け取った文字列を、改行ごとに、Arrayへ格納
ary = Array.new
ary = from_hide.split(/\n/)
#重複管理Array
uniqueAry = Array.new
#リターン
out_hide = ""
#重複する行のみ、out_hideへ格納 (改行も)
ary.each{ |str|
unless uniqueAry.index(str)
#重複管理へ格納
uniqueAry.push(str)
else
out_hide = out_hide + str + "\n"
end
}
unless $HIDEMARU_MACRO
#非秀丸テスト時 print確認
print out_hide
else
#最後に評価した文字を返す
out_hide
end
ロジックで、代入 入れ替え 秀丸連携
a = b → b = a / c = d → d = c
#-------------------------------------------------------------------------------
# 代入 入れ替え 秀丸連携
# csSubstitutionChange.rb
#-------------------------------------------------------------------------------
unless $HIDEMARU_MACRO
#非秀丸テスト時 ヒアドキュメントを利用
from_hide = <<-ENDOFSRC
a = b;
c = d;
ENDOFSRC
else
from_hide = $RUBY_EVAL_INSTR
end
#秀丸から受け取った文字列を、改行ごとに、Arrayへ格納
ary = Array.new
ary = from_hide.split(/\n/)
#重複管理Array
uniqueAry = Array.new
#リターン
out_hide = ""
#重複しない行のみ、out_hideへ格納 (改行も)
ary.each{ |str|
#代入前をマッチさせる。
str =~ /(\t*)(.*) = (.*);/
tab = $1
lefth = $2
right = $3
out_hide = out_hide + tab + right + " = " + lefth +";\n"
}
unless $HIDEMARU_MACRO
#非秀丸テスト時 print確認
print out_hide
else
#最後に評価した文字を返す
out_hide
end
秀丸のマクロでも同等のことは、可能であろうけど
やはり一般的なスクリプト言語で実装していた方が、いろいろ応用範囲は広い。
今は、Pythonでも同等のことができるマクロもあるようなので、また調べて紹介したい。