我使用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标签的确切功能,所以我似乎必须重新编写乳胶的相同功能从头开始的方程式。
答案 0 :(得分:1)
如果你使用vimtex而不是vim-latex-suite,我认为它有你正在寻找的东西。 cse
更改周围环境会要求您输入一个环境名称,然后将周围的$
更改为\begin{...} \end{...}
,并且通常可以直接创建自定义绑定使用环境。它还可以将分隔符从( )
切换为\left( \right)
,立即在equation
和equation*
环境之间切换。
答案 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
是同义词。