在 vim 中复制条件语句

Copy conditional statements in vim

是否有简单的键盘快捷键来复制 vim 中的条件语句?我有这样的 if 条件

  1: if (some condition) {
  2:     // do many things in multiple lines
100: }

通过将光标放在第 1 行键入 y%,将第 2 行复制到第 100 行。有没有办法从第 1 行复制到第 100 行?我尝试了 ya%yi% 但没有任何帮助。我也可以使用标记或记下行号进行复制,但这是一项耗时的任务。其他条件语句也有类似要求。

您可以 va{vaB,然后 :'<,'>y(自动为您插入范围)。

vaB,然后V把"visual"选区变成"visual-line"选区,然后y.

坚持使用 ex 命令,您可以从 if 行执行 :,/^}/y 或从条件中的某处执行 :?if?,/^}/y

此外,如果您可以将该条件折叠成一行,则可以使用简单的 yy.

将闭合折叠内的所有行抽出

通常我所做的是将光标放在 { 上,然后执行 V%y(注意大写字母 'V')。

如果周围有空行,但 if 语句中没有,您可以对段落进行 yap 抽取。这是一个很大的'if'。

虽然这可能不是最好的方法。