1

現在強調表示されているテキスト行を#ifdefで囲むことができるマクロを作成しようとしています。理想的には、カーソルを#ifdefの後に置いて、マクロ名を入力できるようにします。マクロを作成するために記録することはできますが、それを実行できるのは1行のコードのみです。

前:

    bool first_selected_line = false;
    int second_selected_line = 0;

後:

#ifdef // if possible, cursor placed here in insert mode
    bool first_selected_line = false;
    int second_selected_line = 0;
#else
    bool first_selected_line = false;
    int second_selected_line = 0;
#endif

何か案は?

4

2 に答える 2

2

次の行に沿って何かを行うことができます。

qjc#ifdef<esc>magpO#else<esc>gpO#endif<esc>`aq

基本的:

  • 録音開始qj
  • 選択したものを削除して挿入モードに入るc
  • コンストラクトを入力し、必要に応じてコードを貼り付けます
  • ma#ifdef を入力した直後に( ) マークを付けて、最後にジャンプします。
  • でマクロを繰り返します@j

この例が役立つことを願っています!

于 2013-01-15T16:42:18.110 に答える
1

このタスクを達成するには、おそらく snipmate または他のプラグインを使用します。ただし、手動で行うにはいくつかの方法があります。マクロの私の解決策は次のとおりです。

テキストを視覚的に選択してから...

qqc#ifdef 
<C-r><C-o>"
#else
<C-r><C-o>"
#endif<esc>'[A<C-o>q

また、テキストを視覚的に選択したくない場合は、まったく選択する必要はありません。同じマクロを使用しますが、qqcj代わりに から始めてください。

于 2013-01-15T16:50:30.807 に答える