如何对可视块中的所有行发出命令?

时间:2019-07-07 01:34:30

标签: vim

我该如何在逐行可视块中的所有行上执行类似dtR的操作(删除,直到遇到行中的R),或者说下一个n线?

漫长的故事

我们假设有以下代码:

L0 = Rotated_Shape((1, 0), (-1, 0), (-1, 1))
L90 = Rotated_Shape((0, -1), (0, 1), (1, 1))
L180 = Rotated_Shape((-1, 0), (1, 0), (1, -1))
L270 = Rotated_Shape((0, 1), (0, -1), (-1, -1))

O0 = Rotated_Shape((1, 0), (1, -1), (0, -1))
O90 = Rotated_Shape((0, -1), (-1, -1), (-1, 0))
O180 = Rotated_Shape((-1, 0), (-1, 1), (0, 1))
O270 = Rotated_Shape((0, 1), (1, 1), (1, 0))

S0 = Rotated_Shape((-1, 0), (0, -1), (1, -1))
S90 = Rotated_Shape((0, 1), (-1, 0), (-1, -1))
S180 = Rotated_Shape((1, 0), (0, 1), (-1, 1))
S270 = Rotated_Shape((0, -1), (1, 0), (1, 1))

T0 = Rotated_Shape((0, 1), (-1, 0), (1, 0))
T90 = Rotated_Shape((1, 0), (0, 1), (0, -1))
T180 = Rotated_Shape((0, -1), (1, 0), (-1, 0))
T270 = Rotated_Shape((-1, 0), (0, -1), (0, 1))

Z0 = Rotated_Shape((1, 0), (0, -1), (-1, -1))
Z90 = Rotated_Shape((0, -1), (-1, 0), (-1, 1))
Z180 = Rotated_Shape((-1, 0), (0, 1), (1, 1))
Z270 = Rotated_Shape((0, 1), (1, 0), (1, -1))

我现在正在重新编写此代码,我希望所有这些行都成为等式(赋值)右侧的内容。 e。删除变量名称和等号,并仅保留Rotated_Shape((...部分。

我猜想做这种特殊情况的最好方法是搜索并替换一个正则表达式,但是我不知道该怎么做的第一种方法是对每四个元素使用逐块可视或逐行可视模式然后执行类似dtR的操作(删除,直到遇到该行中的R为止)。

1 个答案:

答案 0 :(得分:3)

您可以使用可视块突出显示这些行,然后使用:help 'normal'

最终选择后的结果类似于::'<,'>normal dtR

您也可以将normal缩写为norm