需要脚本/功能/命令用其他文本环绕文本

jlc*_*lin 5 vim

我是Vim脚本的新手.我需要编写一个脚本,用一些文本包围其他文本.例如:

\surroundingtext{surrounded text}
Run Code Online (Sandbox Code Playgroud)

(是的,它适用于LaTeX).我想要突出显示"包围文本"并发出命令,或者将"包围文本"作为正则表达式命令的结果.

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

谢谢,杰里米

Cur*_*son 4

这就是我所做的:

vnoremap <buffer> <leader>sur "zc\surroundingtext{<C-R>z}<Esc>
Run Code Online (Sandbox Code Playgroud)

这将创建一个视觉模式映射,您可以在其中按字符视觉方式选择 ( v) 要包围的文本,键入\sur(假设默认值为mapleader\,文本将被您指定的文本包围。

  • "z指定寄存器“z”
  • c告诉 vim 更改视觉上选择的文本,将原始文本放入寄存器“z”中
  • \surroundingtest是左侧
  • <C-R>z告诉 Vim 粘贴寄存器 'z'
  • }是右侧
  • <Esc>让你回到正常模式

我还更进一步,创建了正常模式和插入模式映射:

nnoremap <buffer> <leader>sur i\surroundingtext{}<Esc>i
inoremap <buffer> <leader>sur \surroundingtext{}<Esc>i
Run Code Online (Sandbox Code Playgroud)

您可以将这些映射放入您的~/.vimrc文件中,但它们将为每个filetype.

对于它们来说,更好的位置是您的~/.vim/after/ftplugin/tex.vim文件,因此它们仅在您的文件filetypetex. 如果父目录尚不存在,则创建它们。

这假设文件类型设置正确tex并且您启用了文件类型插件:

filetype plugin on
Run Code Online (Sandbox Code Playgroud)