vim中的视觉选择和替换
如何选择多个非连续行的不同部分并用相同/不同的文本替换它们 示例:假设我的缓冲区如下所示-vim中的视觉选择和替换,vim,selection,Vim,Selection,如何选择多个非连续行的不同部分并用相同/不同的文本替换它们 示例:假设我的缓冲区如下所示- Roses are reed, Violets aree blue, Sugaar is sweet, And so are you, 我想把第1行中的第3个词(“芦苇”)改为“红、黄、绿”,第2行中的“aree”改为“aree”,第3行中的“Sugaar”改为“Sugar和糖蜜”,第4行中的“you”改为“you” 假设我的光标位于“玫瑰”的“R”。我想同时选择这四个错误,而不是其他错误。完成选择后,
Roses are reed,
Violets aree blue,
Sugaar is sweet,
And so are you,
我想把第1行中的第3个词(“芦苇”)改为“红、黄、绿”,第2行中的“aree”改为“aree”,第3行中的“Sugaar”改为“Sugar和糖蜜”,第4行中的“you”改为“you”
假设我的光标位于“玫瑰”的“R”。我想同时选择这四个错误,而不是其他错误。完成选择后,我希望能够通过按某个键(如Ctrl+j)移动到“簧片”,然后在更改后,我希望能够按某个键(如Ctrl+j)并移动下一个视觉选择,即“aree”
有任何插件可以做到这一点吗?有多个游标插件试图创建Vim的其他编辑器中看到的并行编辑功能(这很困难)。但是,如果我正确理解了您的用例,这在这里不会有帮助,因为所有位置都将以相同的方式进行编辑(因此,reed
,areee
,等等都将被相同的red
)
相反,您似乎要求的是一种搜索所有拼写错误的单词,然后逐个编辑它们的方法。您可以使用正则表达式分支,通过标准搜索执行此操作:
完成后,只需按n
ext即可转到下一个匹配项。请注意,分支必须是唯一的(因此我搜索了you,
,而不是简单地搜索,
)。添加单词边界(\
而不是reed
)也是一个好主意
插件推荐
- 是一个著名的并行编辑插件
- My允许您使用快捷(
默认设置)键映射将当前单词作为搜索分支添加到光标下。(然而,如果你已经在这个词上了,为什么不马上改正呢?)+
- My使用所有拼写错误的单词和位置填充快速修复列表。然后,您可以使用quickfix导航(例如,
)快速转到每个位置。该插件还提供了直接从quickfix列表修复拼写错误的映射:cnext
操作。@DoktorOSwaldo你能解释一下吗?它很有效。但我想要的不仅仅是文字,可能是足够长的文本,我不想打字和搜索。我想要的东西,可以选择一切我想使用导航和东西,可以开/关选择模式,然后改变这些文本,但我想。有可能做到这一点吗?我的SearchAlternations插件还提供视觉模式映射,以便您可以将当前选择添加为搜索分支。为了实现常规搜索,您也可以使用my,或其提供{Visual}*
的备选方案之一。我不太理解。在我的示例(问题中)中,假设我想选择第一行的第一个单词、第二行第一个单词之后的所有内容以及第四行中除最后一个单词以外的所有内容,然后逐个更改它们。我可以用这些插件来做吗?我是vim的新手,如果你能解释一下,那就太好了。你是如何“选择”的?在Vim中,这通常意味着视觉模式选择:您转到开头,按ve
选择一个单词。使用SearchAlternations,您可以通过+
将其添加到搜索模式中。但是既然你已经在那里了,我想知道为什么你现在不立即修复拼写错误,为什么你想把它添加到搜索模式中,稍后再返回那里。你的问题缺少这种动机。我建议你先尝试一些方法和插件。如果它有助于您的工作流程,那就太好了。如果没有,你可以稍后回来问更多更精确的问题。
/reed\|areee\|Sugaar\|you,/