我想创建一个宏,这样如果我选择一段文本(通过键盘或鼠标)并调用此宏,它会在文本周围添加[b]
和[/b]
(例如)。我熟悉使用 录制宏q
和运行宏@
,但我不知道如何将宏与当前的可视选择联系起来。
答案1
宏与您为实现目标而键入的内容没有什么不同。处理视觉选择时,您通常会使用`<
和这样的动作`>
转到选择的开始和结束,并使用和插入标签i
;a
允许gv
您重新选择先前的选择。
对于您的具体示例,可能值得研究一下around.vim - 删除/更改/添加括号/引号/XML 标签插件;也许它已经满足您的要求了。
答案2
另一个值得考虑的选择是终极剪接插件。它有一个特殊的“视觉占位符”机制。
片段可以包含一个名为 ${VISUAL} 的特殊占位符。在展开片段之前,${VISUAL} 变量会随所选文本一起展开。
因此,您可以定义一个用某些特定标签围绕视觉选择的代码片段:
snippet b "surrond with [b] tag"
[b]${1:${VISUAL}}[/b]
endsnippet
或者你可以制作一个通用的代码片段,用任意标签包围视觉选择:
snippet tag "surround with a tag"
[${1}]${2:${VISUAL}}[/$1]
endsnippet
或者您可以疯狂地利用 Python 插值的强大功能对代码片段中可视化选择的文本进行任何您想要的预处理。