2020年5月10日日曜日

サクラエディタで検索時に前回の検索情報をデフォルトで表示させたい

 ちょいちょい置換を試すときに、検索ダイアログを表示させると、前回検索した内容がリセットされることがあって、そのたびにプルダウンで探して、、というのが地味にストレスでした。。

 これも解消方法がありましたので設定方法を記載します。

「共通設定」→「検索」→「カーソル位置の文字列をデフォルトの検索文字列にする」のチェックをオフにする

これだけです!!

この設定がデフォルトではチェックが入っているので、毎回カーソルがある文字が検索文字としてセットされてしまっているんですね。秀丸もこんな挙動だった気がするので、これが普通なんですかね。。

 ちなみに秀丸の場合は

「その他」→「動作環境」→「検索」→「検索の動作」→「カーソル位置の次の文字から検索を開始」のチェックをオフにする




サクラエディタを英語表記に切り替えたい

サクラエディタは日本で開発されたエディタで、海外でも使われているかは不明なのですが、日本国内で勤務されている外国人の方が、職場で許可されているエディタとして使われているケースもあるかと思います。



各メニューを英語表記に切り替えるには、

「設定」→「共通設定」→「ウィンドウ」→「言語」
を「Japanese」から別の言語に切り替えれば変更できます。

上記を実行する前に、各国言語のdllを用意して、sakura.exeと同じフォルダに格納しておく必要があります。

私は英語に切り替えたかったのですが、公式サイトからdllがうまく探せませんでした。
検索したところ、下記URLから入手できました。

SAKURA Editor - Browse /language2 at SourceForge.net
https://sourceforge.net/projects/sakura-editor/files/language2/

sakura_lang_en_US2-2-0-0.zip 2015-02-22 37.4 kB


以上です!

サクラエディタで検索後の黄色い表示を消したい

サクラエディタで検索すると、検索文字に黄色いマークが付きますよね。

これは探しやすくてとてもわかりやすいのですが、用無し後には邪魔になってしまうんですよね。。
で、イマイチ消し方もよくわからない…ということで消し方です!

・「検索」→「検索マークの切り替え」 もしくは
・Ctrl+F3

このメニュー名から機能がわからないので気づきませんでした。。
「検索マークの解除」とかにしてくれればいいのに…


ということで、はい!消えました!



2020年5月6日水曜日

サクラエディタでUWSCのKBD待ち時間を置換したい

 毎度、タイトルにセンスが無くて何をしたいのか分かりづらいのですが、、

 先ほどUWSCの使用を開始しまして、「超速 Windowsマクロテクニック」という本を読み始めました。

 そこで、メモ帳を起動して「hello world.」という文字を入力するマクロを作成して、そのtest.UWSを編集するところがあります。

ACW(GETID("(無題)8 - sakura 2.2.0.1","TextEditorWindowW166"),276,266,1838,1120,0)
BTN(LEFT,CLICK,346,1485,156)
ACW(GETID("(無題)8 - sakura 2.2.0.1","TextEditorWindowW166"),276,266,1838,1120,0)
BTN(LEFT,CLICK,589,1018,172)
KBD(VK_H,DOWN,1406)
KBD(VK_E,DOWN,94)
KBD(VK_H,UP,0)
KBD(VK_E,UP,109)
KBD(VK_L,CLICK,94)

 このKBDの行末近くにある数値がミリ秒待つ指定になり、これを5(ミリ秒)に変えましょうとあります。
で、これが何十行もあるので手動で書き換えるのは面倒くさい。なので置換で一気に処理できないかと考えました。

 ただ、これを機械的に指定するところでまた悩みました。。
結論から書くと


置換前:「(^KBD\(\D+)(\d+)(\))」
置換後:「${1}5${3}」
となります。

----正規表現の意味----
^ : 行頭
() : グループを意味する。複数ある場合最初の()が1、次の()が2...となる
\( , \): 「(」や「)」を指定するため「\」でエスケープ処理します
\D : 数値以外の文字
+ : 直前の文字(1回以上、最長一致)
\d : 数値
$数値 : 置換後に残したいグループ
--------------------


今回苦しんだのは、2つあって、
(1): ○○を含む行の✕✕を置換したい
(2): 置換後のグループと置換したい数値がバッティング
でした。

(1)は「KBD」を含む行にしないと、関係ない「BTN」などの行も対象になってしまいます。
(2)は「$1」と置換したい「5」という数値が「$15」と認識される
でした。
(1)はグループを分けまくる、(2)は{}で囲むという方法で解決できました。

参考にしたサイト

基本的な正規表現一覧 | murashun.jp
https://murashun.jp/blog/20190215-01.html

正規表現を覚えよう!サクラエディタでの文字列置換(番号指定参照) | キャスレーコンサルティング株式会社
https://www.casleyconsulting.co.jp/blog/engineer/4414/


サクラエディタのヘルプにも記載されてましたね。。ぱっと見で気づかなかった。
後から見て、そういうことかと理解できました。

${n} (鬼) (安全な)番号指定参照
後ろにそのまま続けて数字を書くことができます。

2020年5月4日月曜日

サクラエディタで空行を削除、置換マクロの注意点

コピペした情報をテキストで整形する際に空行を削除したくなるときがあります。





















こういう状態で置換で「\r\n」、「」としても、下のように1行にまとまる、悲しい結果になるのと、毎回検索するのが面倒なのでマクロに登録しようと思います。













マクロを使わずに置換する場合は、
置換前:「^\r\n」
置換後:「」
で大丈夫でした。古いバージョンのサクラエディタだとうまくいかない場合もあるので
その場合は「^[\r\n]+」とすると良いです。

----正規表現の意味----
^ : 行頭
[] : []内で指定した文字のどれか 今回は「\r」「\n」「\r\n」のいずれかを意味します。
\r 、 \n 、 \r\n : OSの違いによる改行コード
+ : 1つ左の文字の1個以上繰り返し

つまり、行頭に\r,\n,\r\nのどれかが1個以上ある場合、それは削除するという動作になります。
--------------------



マクロを使う場合
ファイル名は適当に「replace_blank-del.mac」などとして、

//キーボードマクロのファイル
S_ReplaceAll('^\\r\\n', '', 60); // すべて置換
S_ReDraw(0); // 再描画
と記述します。青字の//以降の部分はコメントなので記述不要です。

記述方法がなかなか理解できず悩みました。。

ヘルプには、
構文
void S_ReplaceAll ( S1 , S2 , i1 )
引数 内容
S1 文字列 置換前の文字列
空文字列 (’’) は受け付けない。
S2 文字列 置換後の文字列
i1 整数数値 置換ダイアログの状態を10進数数値で指定する 
設定値
引数 i1 の設定値は次のとおりです。
それぞれの bit が 0=チェックOFF / 1=チェックON
bit 内容
0 単語単位で探す
1 英大文字と小文字を区別する
2 正規表現
3 見つからないときにメッセージを表示
4 置換ダイアログを自動的に閉じる
5 先頭(末尾)から再検索する
6 クリップボードから貼り付ける
7 0=ファイル全体 / 1=選択範囲
9,8 00=選択文字 / 01=選択始点挿入 / 10=選択終点追加 

とあります。

S1」は検索する文字列で、\をヒットさせるには\\と2つ続ける必要があります。
「S2」は置換後の文字なので''と空にします。
「i1」については、使用する機能をチェックONとして、そのビット数を2進数から10進数に変換した値を指定します。


文章では分かりづらいと思うので図で示すとこんな感じです。



8ビット目の、「選択始点挿入」にチェックをする場合は、256を足すので、60+256=316と記述します。