Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在vim中替换第一个事件_Vim_Vi_Greedy_Regex Greedy_Boost Regex - Fatal编程技术网

如何仅在vim中替换第一个事件

如何仅在vim中替换第一个事件,vim,vi,greedy,regex-greedy,boost-regex,Vim,Vi,Greedy,Regex Greedy,Boost Regex,是否可以选择在不要求vim确认的情况下替换第一个事件 我想在第一次出现时将纽约替换为\place{New York},无需确认。我使用了以下代码: silent! /\\begin{text}/,/\\end{textit}/s/New York/\\place{New York}/g > \begin{text}..[paragraphs]...\end{textit} New York可能会在该段中包含10次。替换结尾处的/g标志意味着将在每次出现搜索模式时执行。删除它,它将仅在第

是否可以选择在不要求vim确认的情况下替换第一个事件

我想在第一次出现时将纽约替换为
\place{New York}
,无需确认。我使用了以下代码:

silent! /\\begin{text}/,/\\end{textit}/s/New York/\\place{New York}/g

> \begin{text}..[paragraphs]...\end{textit}

New York
可能会在该段中包含10次。

替换结尾处的
/g
标志意味着将在每次出现搜索模式时执行。删除它,它将仅在第一次出现时执行

另外,
:s
默认情况下不要求确认;您需要为此添加
/c
标志。所以我不知道你为什么在它前面加上
:silent

另一个注释:您可以使用
重用替换零件中的匹配文本:

:/\\begin{text}/,/\\end{textit}/s/New York/\\place{&}

替换结束时的
/g
标志意味着它将在每次出现搜索模式时执行。删除它,它将仅在第一次出现时执行

另外,
:s
默认情况下不要求确认;您需要为此添加
/c
标志。所以我不知道你为什么在它前面加上
:silent

另一个注释:您可以使用
重用替换零件中的匹配文本:

:/\\begin{text}/,/\\end{textit}/s/New York/\\place{&}

所以,您希望在一个行范围内只进行一次替换,而不是每行一个子元素。因此,
/start/,/end/s/pat/rep/
将不起作用。考虑到我们有:

foo
nyc nyc
nyc nyc
bar
我想你期待的是

foo
\\place{nyc} nyc
nyc nyc
bar
但是
:/foo/,/bar/s/nyc/\\place{&}
将给出

foo
\\place{nyc} nyc
\\place{nyc} nyc
bar
因为
:s
将对范围内的每一行执行sub

我会缩小范围来解决这个问题:

/foo//nyc/s/nyc/\\place{&}/
请注意,
/foo/和/nyc/
之间没有逗号

输出应为:

foo
\\place{nyc} nyc
nyc nyc
bar

您可能需要阅读
:h range
以了解详细信息。

因此,您希望在一个行范围内只执行一次替换,而不是每行执行一个子项。因此,
/start/,/end/s/pat/rep/
将不起作用。考虑到我们有:

foo
nyc nyc
nyc nyc
bar
我想你期待的是

foo
\\place{nyc} nyc
nyc nyc
bar
但是
:/foo/,/bar/s/nyc/\\place{&}
将给出

foo
\\place{nyc} nyc
\\place{nyc} nyc
bar
因为
:s
将对范围内的每一行执行sub

我会缩小范围来解决这个问题:

/foo//nyc/s/nyc/\\place{&}/
请注意,
/foo/和/nyc/
之间没有逗号

输出应为:

foo
\\place{nyc} nyc
nyc nyc
bar

您可能需要阅读
:h range
以了解详细信息。

如果找不到图案,则会显示一些错误消息,如图案未找到,如果我们使用静默!,然后它不会显示错误消息。这些消息很有用。但是我的函数中有很多搜索模式,可能是300。所以每次显示的消息都会让我感到不安。如果找不到模式,它会显示一些错误消息,比如找不到模式,如果我们使用静默!,然后它不会显示错误消息。这些消息很有用。但是我的函数中有很多搜索模式,可能是300。所以每次显示的信息都会让我感到不安。