:r !program
打开一个新行,插入我的程序输出,然后在其后插入一行。
我只想将输出插入光标所在的位置,而不是额外的混乱。
我想我可以:
运行前宏
mai^M^[`a
"Mark where I'm at, insert a line and go back
运行我的命令
:r !echo -ne "line1\nline2\nline3"
运行after宏(清理行)
$mb:j!^M`a:j!^M`b
"Go to the end of inserted outpu
"Mark it b
"Join with the next line
"Go to the first mark
"Delete the inserted newline with :j!
"Go to the second mark
如何将其合并为一个命令? 我希望能够做到:
:Readhere !echo -ne "line1\nline2\nline3"
其中:Readhere将是我的自定义命令。
答案 0 :(得分:1)
这可能会做你想要的。 (你不需要!
)
command! -nargs=1 ReadHere exec 'normal! i' . system(<q-args>)
这将创建一个名为ReadHere
的命令,该命令将所有内容作为带引号的参数并将其直接传递给系统命令。然后我们使用exec以正常模式插入所有内容。 (这可能不够健壮)
示例:启动缓冲区为
one two three
运行:ReadHere echo -ne "line1\nline2\nline3"
,其中光标在w
上生成
one tline1
line2
line3wo three