我正在尝试编写一个宏,它允许我用#ifdef包围当前突出显示的文本行。理想情况下,将光标放在#ifdef之后,准备输入宏名称。我能够录制以创建一个宏,但我只能为一行代码执行此操作。
在:
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
有什么想法吗?
答案 0 :(得分:1)
您可以采取以下措施:
qjc#ifdef<esc>magpO#else<esc>gpO#endif<esc>`aq
基本上:
qj
c
ma
)并在结尾处跳回@j
希望这个例子有所帮助!
答案 1 :(得分:1)
我可能会使用snipmate或其他插件来完成此任务。虽然有几种方法可以手动进行。这是我对宏的解决方案:
然后在视觉上选择文字......
qqc#ifdef
<C-r><C-o>"
#else
<C-r><C-o>"
#endif<esc>'[A<C-o>q
如果您不想,也不必在视觉上选择文本。使用相同的宏,但请改为qqcj
。