vim - 作为shell执行行范围,在同一缓冲区中输出

时间:2016-11-29 18:07:26

标签: shell vim

让我们说我在这样的缓冲区中,在第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行,并将输出显示在临时缓冲区中。但是,如何进入我的实际缓冲区以便以后编辑?

(和视觉模式选择的文本一样,不仅仅是数字给出的行范围。)

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工作流程:))