mceditエディターでのマクロの例

前文



原則として、mc(真夜中の司令官)エディターに組み込まれたmceditエディターでソースコードを編集します(vimで、なぜ歴史的に起こったのかを聞かないでください)。 また、mceditでかなり長い間、マクロを記録および再生する機能を使用できます。



私は常にマクロを使用していますが、これらは通常、あるテキストを別のテキストに置き換える、またはいくつかの単一タイプの操作を繰り返すなど、かなり単純なものです。 しかし、この場合、より複雑なマクロの作成に対処する必要がありました。その実装を、すばらしいmceditエディターの潜在的なユーザーに紹介したいと思います。



与えられた



タスクは、ホットキーによって問題を含むファイルを編集するために開くことでした。 最小限の労力で。

つまり、エディターでは、doxygenユーティリティーによって生成された警告のリストを含むファイルが生成されました。これは、問題ファイルへのフルパスと行番号を含むリストでした。



警告ファイルは次のようになりました(さらに多くの行がありました)。

/home/smind/dev/mc/lib/vfs/path.c:1046: warning: argument 'element' of command @param is not found in the argument list of vfs_path_serialize(const vfs_path_t *vpath, GError **error) /home/smind/dev/mc/lib/vfs/path.c:1212: warning: The following parameters of vfs_path_append_new(const vfs_path_t *vpath, const char *first_element,...) are not documented: parameter 'first_element' /home/smind/dev/mc/lib/vfs/path.c:1246: warning: The following parameters of vfs_path_append_vpath_new(const vfs_path_t *first_vpath,...) are not documented: parameter 'first_vpath'
      
      







解決策



まず、タスクは2つのサブタスクに分割されました。

1)行番号を含め、行の先頭からコロンまでのテキストの目的のセクションを選択します。

2)選択したフラグメントを外部プログラムで処理します。



外部マクロ



つまり、行を取り、目的の行で目的のファイルを開く外部マクロを記述する必要があります。



次のコマンドを使用して、mceditが外部マクロを保存する場所を見つけることができます。

 smind@darkstar$ mc -F
      
      







その結果、次のテキストが表示されます

 [ユーザーデータ]
     mceditマクロ:/home/smind/.local/share/mc/mc.macros
     mcedit外部マクロ:/home/smind/.local/share/mc/mcedit/macros.d/macro.*




次に、外部ハンドラーのコードを記述し、/ home / smind / .local / share / mc / mcedit / macros.d / macro。<NUMBER> .shという名前で保存する必要があります

この<NUMBER>は、後でマクロを書き込むときに必要になります(私の場合、ファイルはmacro.42.shと呼ばれていました)。



外部マクロファイルは次のようになります。

 e edit file mcedit `cat %b`
      
      





%b-エディターで選択されたテキストを含むファイルの名前。



エディターマクロ(mceditマクロ)



マクロを記録するには、ctrl-rを押すだけで、さらにキーストロークが記録され、繰り返すことができます。

終了するには、もう一度ctrl-rを押してから、ホットキーを押してマクロを呼び出す必要があります。



次に、次のマクロを記述する必要があります。

 Shift-F7 ( ) Ctrl-Right (   ) Ctrl-Right (   ) Shift-Home (      )
      
      





...そして、マクロの記録が終了したら、ctrl-Pの組み合わせに掛けます。その後、マクロを保存するファイルを開く必要があります/home/smind/.local/share/mc/mc.macros

 [editor] ctrl-T=ExecuteScript:2; ctrl-F=ExecuteScript:0; ctrl-A=MarkAll:-1; ctrl-W=Paste:-1;Down:-1; ctrl-P=SearchContinue:-1;WordRight:-1;WordRight:-1;MarkToHome:-1;
      
      







目的のマクロを含む行に、外部マクロ呼び出し-ExecuteScript:42;を追加する必要があります。



次のようなものが得られるはずです。

 [editor] ctrl-T=ExecuteScript:2; ctrl-F=ExecuteScript:0; ctrl-A=MarkAll:-1; ctrl-W=Paste:-1;Down:-1; ctrl-P=SearchContinue:-1;WordRight:-1;WordRight:-1;MarkToHome:-1;ExecuteScript:42;
      
      







次に、パスを含む任意の行にカーソルを置き、ctrl-pを押すと、カーソルの下のパスでファイルが開きます。



フィン





PS:mceditでマクロを使用するユーザーの数が突然増えることを願っています。

PPS:ctrl-Fの組み合わせで、インデントユーティリティを使用して選択したテキストの書式設定を停止しました(非常に便利です)

PPPS:「次へ」と「後」という言葉が何度も繰り返されることをおaびします



All Articles