2015-06-08 59 views
3

在正常模式下的vim中,我可以使用%移动到右括号。是否有与我可以在搜索和替换命令中使用的等价物?假设我有一些我想从中删除斜体的乳胶代码。在一个简单的场景中,像:%s/{\\it \(.*\)}/\1/gc就可以完成这项工作,但实际上这将停在第一个闭合的大括号上,这很可能会关闭其他东西,因为我可能有{\it some text in italics {\bf and some in bold also} ...possibly so many other commands with curly braces... and finally my closing curly brace:}匹配vim搜索中的右括号并替换

+1

您是否检查过[此SO回答](http://stackoverflow.com/a/5146698/3832970)? –

+0

@stribizhev不,我没有看到,谢谢。似乎长期的答案是学习perl,短期的解决方案是编写一个小的宏,并使用搜索,实际上它不应该比自动搜索更慢,并用'confirm'开关替换。 –

+3

不完全是你问的,但蒂姆波普的[vim-surround](https://github.com/tpope/vim-surround)可能仍然会让你的生活更轻松。 – lcd047

回答

0

这可能是你所说的“写一个小宏和使用搜索”的意思,但你可以使用带有normal命令正常模式命令,如:

:g|{\\it|normal /{\\it^M%mm%5x`mx 

:g将触发每个匹配线图案{\it,并且每场比赛,它运行在正常模式命令/{\\it跳转到正确的地方的路线,%去右括号,mm把一个关口关闭一个,%跳回开场之一,5x删除打开命令,然后`m跳回标记,然后x删除关闭的命令。

这将不会处理的是几行{\it开口在一行上。 (但你可以再运行一次)。比学习Perl快。