在vim

时间:2017-08-30 12:03:17

标签: vim latex surround

我使用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.
         [ ]

我想知道使用surround.vim是否可行。例如,在此:

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

我试过

cse$

但是这并没有像我希望的那样改变$($中的单词)$ $。如果这不可能与surround.vim有关,那将是一个耻辱,因为它已经具有我想要的乳胶方程的HTML标签的确切功能,所以我似乎必须重新编写乳胶的相同功能从头开始的方程式。

3 个答案:

答案 0 :(得分:1)

如果你使用vimtex而不是vim-latex-suite,我认为它有你正在寻找的东西。 cse更改周围环境会要求您输入一个环境名称,然后将周围的$更改为\begin{...} \end{...},并且通常可以直接创建自定义绑定使用环境。它还可以将分隔符从( )切换为\left( \right),立即在equationequation*环境之间切换。

答案 1 :(得分:0)

您可以将 surround.vim \foo ... \bar一起用以下内容包含文字:

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

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

这在:help surround-customizing下记录。它定义了自定义替换。要将\(...\)转换为\foo ... \bar(反之亦然),您还必须定义自定义目标(cp。:help surround-targets)。不幸的是,这个插件目前还没有支持;只支持一组固定的目标,标签在插件中作为特殊情况实现。至少对于在这种情况下的字面替换,我认为没有理由为什么插件也不能支持那些。哦,看,有人已经opened an issue就是这个!

还有其他插件,如vim-sandwich。到目前为止,我只是简单地查看了该插件,但它似乎具有更好的可定制性,因此它可能在那里工作。

答案 2 :(得分:0)

请注意,最新版本的Surround.vim提供了\替换目标,例如

yss\equation*<CR>

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