web-dev-qa-db-ja.com

Notepad ++のマクロを書く方法は?

Char1、char2、char3をそれぞれchar4、char5、char6に置き換えるNotepad ++のマクロを作成したいと思います。ありがとう

33
Igor Drincic

Notepad ++のマクロは、エンコードされた操作の集まりです。記録を開始し、バッファーを操作し、メニューをアクティブにして、記録を停止してからマクロを再生します。
調査後、マクロセクションのファイルshortcuts.xmlに保存されていることがわかりました。たとえば、私はそこにあります:

<Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>

私はソースを見ていませんが、外観からは、メッセージをScintilla(編集コンポーネント、おそらくタイプ0および1)とNotepad ++自体(おそらくメニュー項目をアクティブにする)に送信すると言うでしょう。
ダイアログにアクションを記録するとは思わない(検索/置換など)。

Scintilla.iface ファイルを見ると、2170がReplaceSelのコード(つまり、挿入文字列は何も選択されていない)、2327がTabコマンド、Resource Hacker(便利なだけ)であることがわかります。 。)は、42024が「Trim Trailing Space」メニュー項目であり、41006が「Save」であることを示しています。
アクションタイプ0は数値パラメーター付きのScintillaコマンド用、タイプ1は文字列パラメーター付きコマンド用、2はNotepad ++コマンド用です。

問題:Scintillaには「すべてを置換」コマンドがありません。確認の有無にかかわらず、反復を行うのはクライアントのタスクです。
別の問題:タイプ1アクションが1文字に制限されているようです(手動で編集しましたが、N ++を終了するときに切り捨てられました)。
いくつかのトリックを試しましたが、そのようなタスクはマクロ機能を超えているのではないかと心配しています。

Luaスクリプト機能(またはPythonでスクリプトを作成できると思われるプログラマーのメモ帳)にSciTEにEdgeがあるのか​​もしれません... :-)

[編集] このスレッド または同様の場所から上記のマクロを取得したように見えます... :-)最初の行は不要だと思いますが(副作用または記録)、マクロの良い例でしたとにかくコード。

49
PhiLho

Notepad ++の 'Python Script'プラグインを使用すると、pythonまた、非常に優れたドキュメントと、pythonで記述されたサンプルマクロも用意されています。Pythonに慣れている場合は、 'Python Script'が正義を提供すると思います。情報、参照: http://npppythonscript.sourceforge.net/

15
Sandeep

マクロを記録しましたが、%APPDATA%\ Notepad ++\shortcuts.xmlで見つけました。このスレッドの最初の投稿に掲載されているようです。

NPP Ver。を使用しています5.9.6.2とWin7。

7
Wolli

この投稿は、少し関連するものとして役立ちます。

RegEXを使用してNotepad ++にプレフィックスを付けて追加する

英数字の単語を想定すると、次を使用できます。

検索= ^([A-Za-z0-9] +)$置換=可能: "\ 1"

または、単に行を強調表示して、「すべて置換」と「選択範囲内」を使用する場合(同じ置換で):

検索= ^(。+)$

^は行の始まりを指します。 $は行の終わりを指します。

\ 1は、括弧内のソース一致になります。

1
Samiksha

私の個人的な経験では、shortcuts.xmlは、Notepad ++の終了時に、最初に読み込まれた+後で記録されたマクロと設定で上書きされます。したがって、このファイルの編集にNotepad ++自体を使用することはできません。

Notepad ++を閉じ、別のツールでshortcuts.xmlを編集し、保存してNotepad ++を再起動します。

0
Lerin Sonberg