如何将 LaTeX 命令和环境包装器应用于 ViM 中的单行或多行可视选择?

Posted

技术标签:

【中文标题】如何将 LaTeX 命令和环境包装器应用于 ViM 中的单行或多行可视选择?【英文标题】:How can I apply LaTeX command and environment wrappers to singleline or multiline Visual Selections in ViM? 【发布时间】:2016-06-17 11:35:28 【问题描述】:

我修改了我在这里找到的一些代码以适用于 LaTeX。我演示了两种情况的所需输出。请看一下

处理 LaTeX 命令 处理 LaTeX 环境

http://vim.wikia.com/wiki/Wrap_a_visual_selection_in_an_html_tag

处理 LaTeX 命令

给定:

elephant
    直观地选择“大象” 按 F7 输入“测试”

输出:

\testelephant

VisualcommandTagWrap 的示例代码代码

这适用于单行选择。 我想让它适用于多行选择。 只需使用视觉选择器选择要换行的文本,然后按 F7。

" Wrap visual selection in a latex command tag.
map <F7> : call VisualcommandTagWrap()
function! VisualcommandTagWrap()
  let tag = input("Tag to wrap block: ")
  if len(tag) > 0
    normal `>
    if &selection == 'exclusive' "set selection=exclusive means position before the cursor marks the end of the selection vs. inclusive
      exe "normal i\\".tag.""
    else
      exe "normal a\"
    endif
    normal `<
    exe "normal i\\".tag.""
    normal `<
  endif
endfunction

处理 LaTeX 环境

给定:

elephant
    直观地选择“大象” 按 F7 输入“测试”

输出:

\begintest
elephant
\endtest

VisualenvironmentTagWrap 的示例代码

我不知道如何实现覆盖多行的功能。


其他示例

对于那些不熟悉 LaTeX 的人。有两种情况可以满足 LaTeX 命令和环境的要求。

Here is some visual mode selected text.
And another line of visual mode selected text.

指挥情况:

    键入.vimrc 中定义的函数键来调用函数 vim 提示用户输入(例如“请输入命令名称:”) vim 用命令包围选择。

结果:

\inputstep2Here is some visual mode selected text.
And another line of visual mode selected text.

环境状况

    键入.vimrc 中定义的函数键来调用函数 vim 提示用户输入(例如“请输入环境名称:”) vim 用环境包围选择。

结果:

\begininputstep2
Here is some visual mode selected text.
And another line of visual mode selected text.
\endinputstep2

【问题讨论】:

【参考方案1】:

第 1 步:

您可以将所需的文本(如test)存储在寄存器a 中。

        :let @a='test'

(直到你改变它,它会保持不变并且可以重复使用。如果你想改变它,你必须再次按照这个步骤。)

第 2 步: 然后,使用视觉选择(vVctrl V)选择文本,然后按 Escape 取消选择。

第 3 步; 将光标保持在屏幕上的任意位置(最好在要包围的行中)并在正常模式下按\s

将以下映射放在 ~/.vimrc 文件中。 让我们创建一个映射来环绕。

对于第一个例子:(开始和结束类型)

       :nmap \s '<O\begin<C-R>a<ESC>'>o\end<C-R>a

第二个例子:(开始类型)

       :nmap \s '<O\<C-R>a<ESC>'>a

【讨论】:

这不像原始帖子的版本那样动态。 如果你能给出一个或多个不同的例子,我会尽量给它通用的:) 如果您试用VisualcommandTagWrap,您会看到它会提示您输入文本(例如Tag to wrap block: )。在您的答案中输入将是“测试”以产生\begintestvisualselection\endtest 好的,我将修改答案以实现与您所说的类似的功能。由于我不知道乳胶,如果您能提供更多示例和预期输出会更好。 我又添加了两个示例,一个用于命令,一个用于环境。

以上是关于如何将 LaTeX 命令和环境包装器应用于 ViM 中的单行或多行可视选择?的主要内容,如果未能解决你的问题,请参考以下文章

vim+LaTeX+TtH+Python+MetaWeblog API写博攻略

LaTeX技巧心得236:如何要将图形与标题均置于盒子中

如何制作将相同命令应用于子目录的单个makefile?

如何可视化 JavaScript 包装器对象?

从 OSGi 包访问命令行参数

将vim语法高亮导出到latex