Vim:在小于一行的范围内替换

Wil*_*ill 6 vim replace substitution

假设我有以下代码行:

something:somethingElse:anotherThing:woahYetAnotherThing
Run Code Online (Sandbox Code Playgroud)

并且我想:; 除了第一个之外的每个替换,使得该行看起来像这样:

something:somethingElse;anotherThing;woahYetAnotherThing
Run Code Online (Sandbox Code Playgroud)

有没有办法用:[range]s/[search]/[replace]/[options]命令执行此操作而不使用c选项来确认每个替换操作?

据我所知,作用的最小范围s是一条线.如果这是真的,那么执行上述任务的最快方法是什么?

All*_*nvy 6

我自己也很陌生; 我认为你的范围是正确的(仅限于100%),但是对于这个具体的例子,你可能会尝试用全局标志替换所有实例,然后通过省略全局标记来放回第一个实例 - 类似的东西:s/:/;/g|s/;/:/.

注意:如果该行在;第一行之前包含一个,:那么这将不起作用.