web-dev-qa-db-ja.com

文字列の特定の部分を変更するためのNotepad ++マクロ

「foo」を含む任意の文字列を受け取り、fooを「bar1」、「bar2」などに変更するだけで新しいバージョンを作成するNotepad ++マクロを定義したいと思います。

だから私のファイルが含まれている場合

abc_foo_def

マクロを実行すると、取得したい

abc_foo_def
abc_bar1_def
abc_bar2_def
abc_bar3_def

試験1

Ctrl + D(重複行)を使用してマクロを試しました。一番下の行に移動して「foo」を開始し、Deleteキーを3回押してから、「bar1」と書き込み、bar3まで繰り返します。これが機能したとしても、入力行の複数の「foo」では機能しないことに注意してください。ただし、期待どおりに機能しません。

試験2

別のマクロを複製して、2行目を選択し、「foo」を「bar」に検索して置き換え、In Selectionチェックボックスをオンにしてみました。しかし、それはマクロには当てはまらないと思います。

だから私は信頼できる方法を探しています。助けてくれてありがとう!

追伸1

Notepad ++を使用しないソリューションでも問題ありません。 (Excel、Word、その他)

追伸2

入力文字列に複数の「foo」を含めることができます。それぞれを「barx」に置き換える必要があります

2
jeff

トライアル2が失敗した理由がわかりません。マクロを記録するときにマウスを使用したのではないでしょうか。マクロを記録するときにキーボードだけを使用すると、より良い結果が得られると確信しています。

次のマクロをNotepad ++ 6.6.9で記録しました。これは、ソース行の可変数の「foo」文字列に対して機能します。

  • ソース行の先頭にカーソルを置きます

記録:

  • Ctrl+D
  • Ctrl+D
  • Ctrl+D
  • Home
  • Shift+End
  • Ctrl+H (検索と置換用)
  • 「foo」を見つけて「bar1」に置き換えます。 「選択中」を選択します。クリック Replace All
  • ダイアログを閉じる
  • Home
  • Shift+End
  • Ctrl+H (検索と置換用)
  • 「foo」を見つけて「bar2」に置き換えます。 「選択中」を選択します。クリック Replace All
  • ダイアログを閉じる
  • Home
  • Shift+End
  • Ctrl+H (検索と置換用)
  • 「foo」を見つけて「bar3」に置き換えます。 「選択中」を選択します。クリック Replace All
  • ダイアログを閉じる

録音を終了します

%AppData%\Notepad++\shortcuts.xmlのXMLは次のとおりです。

<Macro name="SuperUser_Q_Macro" Ctrl="no" Alt="no" Shift="no" Key="0">
  <Action type="0" message="2469" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2469" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2469" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2453" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2300" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2315" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" /> 
  <Action type="3" message="1625" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1602" wParam="0" lParam="0" sParam="bar1" /> 
  <Action type="3" message="1702" wParam="0" lParam="898" sParam="" /> 
  <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> 
  <Action type="0" message="2453" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2300" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2315" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" /> 
  <Action type="3" message="1625" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1602" wParam="0" lParam="0" sParam="bar2" /> 
  <Action type="3" message="1702" wParam="0" lParam="898" sParam="" /> 
  <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> 
  <Action type="0" message="2453" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2300" wParam="0" lParam="0" sParam="" /> 
  <Action type="0" message="2315" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" /> 
  <Action type="3" message="1625" wParam="0" lParam="0" sParam="" /> 
  <Action type="3" message="1602" wParam="0" lParam="0" sParam="bar3" /> 
  <Action type="3" message="1702" wParam="0" lParam="898" sParam="" /> 
  <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> 
</Macro>
1
Dane