gpt4 book ai didi

linux - 如何在 VI/VIM 编辑器中用不同的词替换查找词?

转载 作者:太空狗 更新时间:2023-10-29 11:41:42 25 4
gpt4 key购买 nike

例如,我有一个文本,10 3 4 2 10 , 4 ,10 ....

不,我想用不同的词来改变每 10 个

我知道 %s/10/replace-words/gc 但它只能让我像 yes/no 那样交互替换,但我想用不同的词更改每次出现的 10,例如 replace1, 3, 4 , 2 , replace2, 4 , 替换 3 ....

最佳答案

替换每次出现的 10replace{index_of_match} :

:let @a=1 | %s/10/\='replace'.(@a+setreg('a',@a+1))/g

替换每次出现的 10使用预定义数组中的单词:

:let b = ['foo', 'bar', 'vim'] | %s/10/\=(remove(b, 0))/g

替换每次出现的 10使用预定义数组中的单词和匹配项的索引:

:let @a=1 | let b = ['foo', 'bar', 'vim'] | %s/10/\=(b[@a-1]).(@a+setreg('a',@a+1))/g

但由于您无论如何都必须输入任何单词,因此第二个和第三个功能的好处是微乎其微的。请参阅 SpoonMeiser 的“手动”解决方案的答案。

更新:如愿,对第二个例子中正则表达式部分的解释:

% = 在文档的每一行
s/<search>/<replace>/g = s表示进行搜索和替换,g表示替换每一次出现。
\=将以下解释为代码。
remove(b, 0)删除列表索引 0 处的元素 b并将其返回。

所以第一次出现。该行将是 %s/10/foo/g第二次,列表现在只有['bar', 'vim']所以该行将是 %s/10/bar/g等等

注意:这是一个快速草稿,不太可能是实现它的最佳和最干净的方法,如果有人想改进它,请随时添加评论

关于linux - 如何在 VI/VIM 编辑器中用不同的词替换查找词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539251/

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