vim自动替换

vim自动替换

我有以下几行:

    '0,
    '1,
    '2,
    '3,

如何在逗号前加引号?

到目前为止我已经尝试过以下操作:

%s/[0-9],/&/g

所以 & 这里替换了匹配的模式...

答案1

你可以使用类似的东西:

%s/\('[0-9]\),/\1',/

它使用\(\)创建选择组,然后由\1替代侧(这意味着第一组)引用。

答案2

如果你想移动从数字之前的位置到逗号之前的位置的配额,然后可以使用分组

%s/'\([0-9]\),/\1',/

或者要在逗号之前添加另一个引号,只需将其包含到第一组中即可:

%s/\('[0-9]\),/\1',/

答案3

通常我使用宏来完成这样的任务。

qqEi'<Esc>0jq3@q

将完成工作(注意该<Esc>部分是按退出键,而不是 5 个单独的键)。这是一个细分:

  • qq开始录制宏并将其分配给按键q
  • Ei'<Esc>转到单词末尾并插入'.
  • 0j转到下一行的开头。
  • q结束录音。
  • 3@q播放宏 3 次,对其他 3 行应用相同的操作。

替换3为您拥有的行数。

答案4

也许您忘记定义需要此功能的通用形式。为了在不猜测的情况下完成您所要求的操作,这是适用于您的示例输入的最简单(懒惰!)的解决方案:

%s/,/',/

如果您也想处理更复杂的情况,您应该编写更好的示例,包括需要模式替换才能工作的最复杂的情​​况,以及理想情况下目标输出的示例。

相关内容