让我们说我在这样的缓冲区中,在第4行,我想运行第1行到第2行并将输出放在第4行(光标所在的位置)的同一个缓冲区中:< / p>
echo "Testing"
echo "more testing"
# and here I want the output from running lines 1 to 2
...我知道我可以1,2w !sh
运行第1行和第2行,并将输出显示在临时缓冲区中。但是,如何进入我的实际缓冲区以便以后编辑?
(和视觉模式选择的文本一样,不仅仅是数字给出的行范围。)
答案 0 :(得分:1)
您使用的是:w !...
(:help :w_c
),但您可能需要:!
(:help :!
):
gg - go to top
Vj - select the two lines
y - yank into a buffer
4gg - go to 4th line
V - select it
p - paste over it
gv - reselect the pasted range
:!sh<CR> - execute in shell and replace
或者,更多地信任ex命令,
:4d
:1,2y
:3pu
:4,5!sh
注意:!sh
在大多数情况下等同于!
,因为!
会调用您的默认shell。
答案 1 :(得分:0)
Yey!找到了。如果其他人在处女/外国vim(无插件或其他人的服务器/配置)上需要完全相同的黑客攻击:
:1,2r !sh %
(是的,输出是在命令之后,或者技术上命令被它们的回声替换,但不管怎样,不是在光标位置,但足以让我在vim中复制我的Sublime + SublimeCommand工作流程:))