1

我使用 vim(和 vim latex-suite)来编辑乳胶文档。经常发生的事情是需要将内联方程更改为显示方程,如下所示。我开始:

The most important equation is \(f(x)=x^2,\) but most disagree.

并以:

The most important equation is 
  \begin{equation*}
    f(x)=x^2,
    \end{equation*}
  but most disagree.

将光标放在“=”上,我很高兴调用一个函数来实现结果,并且我可能会弄清楚如何自己编辑缩进和间距,所以输出就足够了

The most important equation is 
\begin{equation*}
f(x)=x^2,
\end{equation*}
but most disagree.

理想情况下,以相反方向工作的函数(显示方程到内联方程)也会很棒,但首先要做的是。FWIW,我正在使用surround.vim 插件,它似乎非常适合\(\)中的周围文本,但我不确定它是否可以用来检测/突出显示乳胶方程。HTML标签似乎有这个功能,但我还没有看到它为乳胶实现。任何帮助将不胜感激。

[编辑:]

为了澄清我在寻找什么,我想说的是是否可以使用surround.vim 进行自定义不对称引号/括号检测。这就是我知道该怎么做。在我的 ~/.vimrc 文件中,我有一行

autocmd FileType tex let b:surround_101 = "\\(\r\\)"

然后,当我编辑 tex 文件时,我有以下内容:

This is a $word in$ a some text.
            [ ]

我可以在正常模式下输入:

cs$e

我得到

This is a \(word in\) a some text.
         [ ]

同样,如果我有

This is a <p>word in</p> a some text.
              [ ]

我可以在正常模式下输入:

cste

我得到

This is a \(word in\) a some text.
         [ ]

我想做的是从此开始:

This is a \(word in\) a some text.
             [ ]

对此:

This is a \foo word in \bar a some text.
         [ ]

我想知道这是否可以使用环绕.vim。例如,关于这个:

This is a \(word in\) a some text.
             [ ]

我试过了

cse$

但这并没有像我希望的那样将 \(word in\) 更改为 $word in$。如果这不可能与环绕.vim,那将是一种耻辱,因为它已经具有我想要用于乳胶方程式的 HTML 标记的确切功能,所以看起来我必须为乳胶重新编码相同的功能从零开始的方程。

4

3 回答 3

2

如果你使用 vimtex 而不是 vim-latex-suite,我认为它有你想要的。csefor change around environment 会要求您输入环境名称,然后将周围$的 's 更改为\begin{...} \end{...},并且为常用环境创建自定义绑定看起来非常简单。它还可以将分隔符从 切换( )\left( \right),立即在equationequation*环境之间切换。

于 2018-06-05T05:40:48.940 回答
0

请注意,最近版本的环绕.vim 提供了一个\替换目标,例如

yss\equation*<CR>

在方程式环境中围绕线。l是同义词。

于 2019-06-25T20:35:05.097 回答
0

你可以用...用这个包围文本:\foo\bar

let b:surround_102 = "\\foo \r \\bar"

现在,ys2wf将围绕下一个2 w命令;f是(任意)选择的替换符号,对应于:echo char2nr('f')=> 102

这记录在 下:help surround-customizing。它定义了一个自定义替换。为了转换\(...\)\foo ... \bar(反之亦然),您还必须定义一个自定义目标(cp. :help surround-targets)。不幸的是,该插件目前不支持该功能;仅支持一组固定的目标,标签在插件内作为特例实现。至少对于这种情况下的文字替换,我看不出插件不能支持这些的理由。哦,看,有人已经为此打开了一个问题!

还有一些替代插件,如vim-sandwich。到目前为止,我只简要地查看了该插件,但它似乎具有出色的可定制性,因此它可能在那里工作。

于 2017-08-30T15:54:11.267 回答