在vim

时间:2018-03-25 17:21:31

标签: vim selection

如何选择多个不连续行的不同部分并用相同/不同的文本替换它们?

示例:假设我的缓冲区看起来像这样 -

Roses are reed,
Violets aree blue,
Sugaar is sweet,
And so are you,

我希望将第3行('reed')改为'红色,黄色和绿色',在第2行'aree'改为'are',在第3行'Sugaar'改为'Sugar and molasses'在第四行'你','你'。

说我的光标位于'Roses'的'R'。我想立刻选择所有这四个错误,而不是其他错误。在我完成选择之后,我希望能够通过按某个键(例如 Ctrl + j )移动到'reed',然后在更改之后我希望能够按某个键(例如 Ctrl + j )并移动下一个视觉选择“ise”。

有没有插件可以做到这一点?

1 个答案:

答案 0 :(得分:1)

多个游标插件,它们试图在Vim的其他编辑器中创建并行编辑功能(这很困难)。如果我理解你的用例是正确的,那么这在这里没有用,因为所有地方都会以相同的方式进行编辑(所以reedareee等等都将被替换为相同的red)。

相反,你似乎要求的是一种搜索所有错误拼写单词的方法,然后逐个编辑它们。您可以使用正则表达式 branches

进行标准搜索
/reed\|areee\|Sugaar\|you,/

完成后,您只需按n分机即可转到下一场比赛。请注意,分支必须是唯一的(因此我搜索了you,而不是简单地,)。添加单词边界(\<reed\>而不是reed)也是一个好主意。

插件建议

  • multiple cursors是一个着名的并行编辑插件
  • 我的SearchAlternatives plugin允许您将光标下的当前单词添加为具有快速(默认为<Leader>+)键映射的搜索分支。 (但是,如果您已经说过,为什么不立即纠正?)
  • 我的SpellCheck plugin使用拼写错误的单词和位置填充quickfix列表。然后,您可以使用quickfix导航(例如:cnext)快速转到每个。该插件还提供了直接从quickfix列表修复拼写错误的映射。