您可以将命令行模式变成一个名为命令行窗口的完整Vim缓冲区,方法是在使用
<C-f>
进入命令行模式后按:
,或者直接通过进入q:
。在那里,您可以像往常一样猛拉;例如通过"+yy
或:yank +<CR>
。 (这也适用于其他复杂的编辑!)
最后一个命令行在寄存器中
:
; :let @+ = @:<CR>
会将其复制到剪贴板。
最不像 Vim 的方法是用鼠标选择;在 Linux 上,文本在 X 主选择中;在 Windows 上,您可以使用 Edit > Copy 将其放入剪贴板。
转到要复制的行,处于命令模式 - 而不是输入模式。
通过将行复制到命名缓冲区来创建“宏”。我喜欢用
m
做微距:
"m
将行拉入您刚刚命名的缓冲区:
yy
现在(仍在命令模式下)您可以使用标准
@
将缓冲区作为“宏”“运行”以寻址命名缓冲区:
@m
如果你运行它并且有错误,只需按
u
“撤消”并更正该行
"myy
可以在短时间后成为肌肉记忆
再举个例子~
获取一些数据:
$ vi
:r!man true
转到缓冲区的末尾
G
接下来,进入输入模式,
o
并在空行中输入您的“宏”,就像您在命令模式下输入它一样,包括前导冒号以便于识别。
:%!sed "s/.$(printf '\b')//g"
将整行(带有“Y”或“yy”)拖入命名缓冲区。同样,我们将简单地使用名称“m”来表示宏,以便于记忆。
您可以通过这种方式拥有多个具有不同字母名称的“宏”,但您需要记住它们。
"myy
准备就绪后,使用命令模式通过@和缓冲区名称运行“宏”。
@m
如果做得正确,文本应该立即变得“不乏味”。
显然这是一个简短的“宏”,但它给了你想法。 这样做的最大优点是它是 POSIX 定义的“正确”
ex
和 vi
用法,因此它应该在没有 vim 的情况下工作。