编辑:我将其移至Vi和Vim网站:https://vi.stackexchange.com/questions/13689/how-to-find-and-replace-in-vim-without-having-to-type-the-original-word
我想在Vim中优化我的“查找和替换”工作流程。这是我经常做的事情,因为我相信大多数人也会这样做。通常有一些东西 - 复制一个块并在几个地方更改变量的名称。我知道,我知道,这可能会触发你的“为什么要复制和粘贴代码”反射但是,让我们不要走那条路......有很多有效的用例:)
我很清楚搜索和替换命令::s
或:%s
但我不喜欢它们。它迫使我输入我正在搜索的完整变量名称以及我要将其更改为的内容。也许有更好的方法来修复:%s
的输入量?我经常使用很长的描述性变量名,所以这对我来说真的是一个破坏性的。我也不喜欢从头开始输入一个变量名是错误的,并且可以消耗时间和脑力来追捕错别字。我更喜欢键入一次,然后复制和粘贴,以尽可能完全避免这种情况。
我当前的工作流程使用移动/抽动/选择/搜索/放置的一些组合来移动文件并逐个替换。它不是很好,但有利于避免键入完整的变量名称。我可能只需要用/
键入前几个字母或使用另一个移动命令(即fx
),具体取决于周围的内容,然后点击ve
选择整个单词。我也不介意我必须重复每一个实例。如果不确认每次更改,我都不会完全找到替代品。但是如果我能用一次击键重复替换动作(我不能用这种方法做),那将更为可取。每次替换通常都是n
然后ve
然后p
(甚至更差"0p
)
有更快的方法吗?
答案 0 :(得分:1)
我自己的工作流程与您的工作流程类似:
/
或导航。*
查找该单词的下一个实例。cw
更改一个实例,然后使用新变量名称。n
/ N
转到下一个/上一个实例,.
重复上一次修改。这个工作流程给了我与你相同的优势,因为我可以在应用更改之前查看每个案例,但每次额外更改只需两次击键。
希望这有帮助。
答案 1 :(得分:0)
我喜欢"视觉突出显示然后编辑"方法
shift + v
突出显示您要修改的区域。
然后:s/old/new/r
其中old
是您要用new
替换的字词。
r
更改了该字old
的第一个实例。
注意* r
以外的选项可以修改其替换单词的行为。