gpt4 book ai didi

css - 如何快速用不同的字符串替换字符串模式?

转载 作者:行者123 更新时间:2023-11-28 17:30:19 26 4
gpt4 key购买 nike

例如,我有许多要设置样式的 HTML 选项卡,它们使用不同的类,并且会有不同的背景。背景图像文件的名称与类名相对应。

我找到的方法是猛拉:

.tab.home {
background: ...home.jpg...
}

然后粘贴,然后:s/home/about

这要重复几次。我发现 & 可用于重复上次替换,但仅限于相同的目标字符串。用不同的目标字符串重复替换的最快方法是什么?

或者,可能有更有效的方法来做这样的事情?

最佳答案

我快速使用了一些 vim 宏魔术,并提出了以下想法……对于篇幅,我深表歉意。我认为最好解释一下这些步骤..

首先,将要重复的文本 block 放入寄存器(我选择了寄存器 z),因此将光标放在 .tab 行的开头按下 "z3Y(选择 reg z 并拉出 3 行)。

然后我将我想要的一系列 VIM 命令作为 )"zp:.,%s/home/ 输入到缓冲区中。(只需按 i 并键入命令)

这转化为;

  • ) 到当前 '{}' block 的末尾,
  • "zp 将文本的副本粘贴到寄存器 z,
  • .,%s/home/ 有两个技巧。

    1. .,% 确保替换适用于从 .tab 开始到结束 结束的所有内容,并且,
    2. 命令不完整(即末尾没有 a),所以 vim 会提示我完成命令。

      • 请注意,虽然 %s/// 将对文件的每一行执行替换,但重要的是要意识到 % 是范围 的别名>1,$。使用 1,% 作为范围,导致 % 被用作“跳转到匹配括号”运算符,从而产生从当前行到行尾的范围% 匹配。 (在这个例子中,是 block 中的右大括号)

然后,将光标放在行首的 ) 之后,我输入 "qy$ 这意味着 将所有字符拉到行尾该行进入寄存器 q。这很重要,因为简单地用 Y 抽取行将在寄存器中包含一个回车符,并会导致宏失败。

然后我用@q执行register q的内容,在命令行提示我完成s/home/

在键入替换文本并按回车键后,粘贴的 block (来自寄存器 z)出现在缓冲区中,并且已经应用​​了替换。

此时您可以通过简单地键入 @@ 来重复最后一个 @q。您甚至不需要将光标向下移动到 block 的末尾,因为宏开头的 ) 会为您完成这项工作。

这有效地减少了提取原始文本、插入原始文本以及执行两个手动替换命令到一个简单的 @@ 中的过程。

完成后,您可以安全地从编辑缓冲区中删除宏字符串。

这是令人难以置信的 vim-ish,可能会浪费一些时间来做对,但当你做对时它可以为你节省更多。

Vim 宏可能是您正在寻找的技巧。

关于css - 如何快速用不同的字符串替换字符串模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com