在单个匹配的行上执行多个命令

时间:2012-06-03 11:12:09

标签: vim

我最近需要将列表包装在我在小型环境中工作的LaTeX文档中。基本上,在匹配的文件中的每一行之前和之后插入一些文本。为此,我使用了以下命令序列:

:g/lstinputlisting/:norm O\begin{minipage}{\textwidth}
:g/lstinputlisting/:norm o\end{minipage}

虽然这给了我想要的结果,但是必须输入两个单独的命令似乎很笨拙,两个命令都在相同的匹配线上运行。是否可以在同一行上执行多个命令,或者重复命令是否真的有必要?

2 个答案:

答案 0 :(得分:0)

我写这篇文章的一个解决方案是在传递给norm命令的字符串中使用,然后使用移动命令插入第二行。这略微改进了:

:g/lstinputlisting/norm O\begin{minipage}{\textwidth}^[jo\end{minipage}

(^ [通过按^ V(Ctrl + V)然后按退出键生成。)

答案 1 :(得分:0)

包装:

lstinputlisting
带标签的

\begin{minipage}{\textwidth}
lstinputlisting
\end{minipage}

您可以使用此命令:

:%s/lstinputlisting/\\begin{minipage}{\\textwidth}\r&\r\\end{minipage}
  • \rnew line
  • &search pattern