Vim 需要脚本/函数/命令将文本与其他文本环绕

Vim 需要脚本/函数/命令将文本与其他文本环绕,vim,Vim,我不熟悉Vim中的脚本编写。我需要写一个脚本,用其他文本围绕一段文本。例如: \surroundingtext{surrounded text} (是的,是乳胶的)。我想突出显示“包围文本”并发出命令,或者将“包围文本”作为正则表达式命令的结果 我想问题是,如何把它放在函数中 谢谢, 杰里米几周前我问了一个非常类似的问题。答案中有很好的起点 我建议使用视觉选择,因为您需要围绕任意文本块而不是单个单词。按v,进入视觉选择模式,然后选择要环绕的文本。接下来,使用以下按键笔划录制具有所需修改的宏:

我不熟悉Vim中的脚本编写。我需要写一个脚本,用其他文本围绕一段文本。例如:

\surroundingtext{surrounded text}
(是的,是乳胶的)。我想突出显示“包围文本”并发出命令,或者将“包围文本”作为正则表达式命令的结果

我想问题是,如何把它放在函数中

谢谢,
杰里米几周前我问了一个非常类似的问题。答案中有很好的起点

我建议使用视觉选择,因为您需要围绕任意文本块而不是单个单词。按
v
,进入视觉选择模式,然后选择要环绕的文本。接下来,使用以下按键笔划录制具有所需修改的宏:

qa        " record a macro in buffer a
x         " cut the selected text
i         " enter insert mode
prefix    " type the desired prefix
<esc>     " exit insert mode
p         " paste the cut text
a         " enter insert mode after the pasted text
postfix   " type the desired postfix
<esc>     " exit insert mode
q         " stop recording
qa“在缓冲区a中记录宏
x“剪切所选文本
i“进入插入模式
前缀”键入所需的前缀
“退出插入模式
p“粘贴剪切的文本
“在粘贴的文本后进入插入模式”
后缀”键入所需的后缀
“退出插入模式
q“停止录制
要重用宏,只需直观地选择要修改的下一个块,然后按
@a

如果周围的文本经常变化,或者希望在整个编辑会话中保持不变,那么这可能会太麻烦。在这种情况下,您可能希望编写一个vim脚本函数,以更健壮的方式处理它。

我的工作如下:

vnoremap <buffer> <leader>sur "zc\surroundingtext{<C-R>z}<Esc>
您可以将这些映射放置在
~/.vimrc
文件中,但它们将映射到每个
文件类型

更好的地方是你的
~/.vim/after/ftplugin/tex.vim
文件,这样它们只在
文件类型为
tex
时才被映射。如果父目录不存在,请创建它们

这假设文件类型已正确设置为
tex
,并且已启用文件类型插件:

filetype plugin on

你可能想把这篇文章发到网上,谢谢你提醒我有关宏的事情。你的解释很清楚。但是,我需要将其作为一个函数,因为我将在许多Vim会话中定期使用它。我来看看你的另一个问题,看看它是如何完成的。是的,这就是诀窍。谢谢我几乎从未想过使用地图。我应该更经常地考虑他们。我已将地图放入本地插件文件中,因此不会影响我打开的所有文件。我使用Vim的时间越长,我就越意识到有多少东西需要学习。谢谢你的帮助!
filetype plugin on