如何在不同列上插入可视块

How to insert in visual block on different columns

假设我有这样几行:

one_view = Column(String(5))
two_view = Column(String(5))
three_view = Column(String(5))
four_view = Column(String(5))
five_view = Column(String(5))
six_view = Column(String(5))
seven_view = Column(String(5))
eight_view = Column(String(5))
nine_view = Column(String(5))

我需要在每个 view 之后附加 _f

我正在进入可视块并执行 8j,在此之后我想在每一行中找到第一次出现的 = 并将光标放在此处,在此之后我想输入插入模式。

香草 vim 可以吗?

编辑:我知道我可以用宏或 :s/view/view_f/g 来完成,但我只是想知道这种方式是否可行

那是不可能的。不回答实际问题,但对于这类问题,我会使用其中一种策略:

  • 在正确的范围内使用替换,例如 s/_view/_view_f/
  • 对齐所有空格(例如easyalign),然后使用可视模式和I在矩形上插入_f

不,视觉块模式不能那样使用。

通常,视觉块模式会创建一个 矩形 ,这意味着列和垂直对齐。视觉块模式不限于垂直对齐文本的唯一情况是使用 $ 将块扩展到行尾时,即使这样,它也只是相关行的末尾。

:[range]s/view/&_f 确实 最好的方法,在这里。

正如其他人所说,它不会像您用 vanilla vim 描述的那样工作(有一些对齐插件实际上可能使它成为可能,但我真的不建议很多原因)我建议使用 macros 而不是正则表达式。正则表达式仅适用于这种特定情况。如果 'view' 不存在,它就不会工作(也许你可以使用 = 的正则表达式,但从长远来看,你并没有真正为自己做好准备。这种事情总是会出现时间,我更喜欢 macros。这些可以让你复制一些命令并重播它们。所以你将创建一个执行第一个命令的宏,然后你将重播该宏 8 次以执行其他 9 次. 所以我会:

  1. gg 到达这个九行文件的顶部
  2. qq 启动绑定到 q
  3. 的宏
  4. e 到第一个单词的结尾
  5. a_f_f 附加到第一个单词
  6. Esc 退出插入模式
  7. j 转到下一行
  8. 0 转到行首
  9. q 结束你的宏
  10. 8@q 播放 q 宏 8 次。

现在您的文件应该是您想要的样子了。