如何在 Vim 中第一次出现字符之前添加文本?

How to add text before the first occurence of a character in Vim?

我有文字

af_ZA_work_013_A;135.300;150.203;Spreker-A;;;[no-speech] #mm
af_ZA_work_013_A;135.300;150.207;Spreker-B;;;[no-speech] #something

我想在每行的第一个 ; 之前添加 .wav,所以我会得到

af_ZA_work_013_A.wav;135.300;150.203;Spreker-A;;;[no-speech] #mm
af_ZA_work_013_A.wav;135.300;150.207;Spreker-B;;;[no-speech] #something

我该怎么做?

s/search_regex/replace_regex/ 将逐行执行您的查找和替换。

默认情况下,这仅在当前行上完成,并且仅在当前行上 search_regex 的第一个匹配项上完成。

前置 % (%s/search/replace/) 将在文件中的 all 行上执行查找和替换,每行最多执行一次替换。您可以提供范围(1,3s 将在第 1-3 行执行)或其他行修饰符,但这与此处无关。

追加 g (s/search/replace/g) 将每行进行多次替换。同样,这里不相关,但对其他场景有用。

您可以搜索 ; 并替换为 .wav;(有一些方法可以保留搜索词并添加到其中 using capture groups 但是对于一个静态字符,重新键入会更快它)。

TL;DR: :%s/;/.wav;/ 随心所欲。