在 VIM 中插入匹配 \end{something} 的快捷方式

在 VIM 中插入匹配 \end{something} 的快捷方式

我记得前段时间我总是使用 VIM 中的快捷方式来输入以下内容(<X>指示光标的位置):

... rest of document ...

\begin{<ENVIRONMENT>}
  some text
  more text
<X>

... document continues ....

然后我会在位置输入一些快捷方式并插入<X>匹配:\end{<ENVIRONMENT>}

... rest of document ...

\begin{<ENVIRONMENT>}
  some text
  more text
\end{<ENVIRONMENT>}

... document continues ....

当然,这里<ENVIRONMENT>可以是任何东西,例如alignitemize

我知道 VIM 的<C-x> + <C-p><C-x + <C-n><C-x> + <C-o>。最后一个对于关闭 HTML 标签非常有用,但在 LaTeX 中不起作用。

我忘了它是什么了,希望这里有人知道。它可能是一个插件,但我不这么认为。如果有人能告诉我它是什么,我将永远感激不尽。

编辑:当然了使用 LaTeX-Suite (或者 vim-latex,希望他们坚持使用一个名字)。

答案1

使用时VimTeX,你可以]]在插入模式下输入 来关闭当前环境。

答案2

同样有用的是nameofenvironment输入F5

\begin{nameofenvironment}

\end{nameofenvironment}<++>

并将光标放在环境主体中。您可以通过按CTRL J

答案3

上述所有解决方案都会在您输入后为您关闭环境,\begin{<environment name>}...但我更喜欢只输入环境名称,然后填写vim\begin{...}标签\end{...}。为此,我在 中有以下几行~/.vim/ftplugin/tex.vim

" put \begin{} \end{} tags tags around the current word
map  <C-B>      YpkI\begin{<ESC>A}<ESC>jI\end{<ESC>A}<esc>kA
map! <C-B> <ESC>YpkI\begin{<ESC>A}<ESC>jI\end{<ESC>A}<esc>kA

这样我就可以在行首输入一个单词,例如alignitemizetheorem、 ... 然后按 control-B 将其更改为环境的标记。例如,如果我输入后align*按 control-B,则 vim 会将其转换为:

\begin{align*}
\end{align*}

我的宏的一个有用功能是它保留了环境名称的缩进。

编辑正如评论所指出的,这是 vim-latex 的标准部分。

答案4

在你的 vimrc 中输入:

inoremap \end <><Esc>?begin<Enter>Vy/<><Enter>pfbcwend<Esc>kddo

工作原理:innoremap 在插入 \end 时在插入模式下创建一个映射键。输入“<>”字符串,找到(/)单词“begin”并复制整行(Vy),然后返回到“<>”(\<>)并粘贴该行(p),找到行中的第一个 b 并将单词(cw)更改为“end”,之后删除“<>”字符串并进入插入模式。

所以:文本必须是这样的:

\begin{something}
some texot o comands

在不同的线路上。它必须起作用。

相关内容