繁体   English   中英

一个 Vim 命令,用于插入一段文本以匹配行,除非它已经存在

[英]A Vim command to insert a certain piece of text for matching lines unless it is already present

在编辑 LaTeX 文档时,我希望在包含\\begin{‹environment›}命令的每一行末尾附加% (fold)字符串(对于任何‹environment› )。

我尝试使用以下 Vim 命令:

:g/\\begin\{\w+\}/ s/$/\% \(fold\)/

但它会将已经存在的行的% (fold)字符串加倍。

如何修改上述命令以插入% (fold)仅当它不存在时才插入?

只需修改:global (或:substitute )命令中的模式以仅匹配不以% (fold)结尾的行:

:g/\\begin{\w\+}/ s/\(% (fold)\)\@<!$/% (fold)/

要么

:g/\\begin{\w\+}\(.*% (fold)$\)\@!/ s/$/% (fold)/

这就是我要做的: :v/% (fold)$/s/\\(\\\\begin.*$\\)/\\1% (fold)

这意味着对于不以% (fold)结尾的每一行,搜索\\begin和直到结尾的所有字符,并用搜索加上% (fold)替换它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM