Shell 如何从Vim缓冲区写入控制台?

Shell 如何从Vim缓冲区写入控制台?,shell,vim,Shell,Vim,如果我从Vim内部运行shell命令,请说:!ls,退出Vim后,它的输出仍将在shell中可见 我想以类似的方式将Vim中当前缓冲区中选定的行写入shell。也就是说,在我退出Vim后,控制台上应该可以看到这些线。如何做到这一点 例如,要写入第4-10行,此命令没有这样做::4,10w!tee简单地看一下文件怎么样 :!cat % (针对:%!cat,它将只打印到缓冲区) 仅打印选定行: :execute '!sed -n ' . line("'<") . ',' . line("'

如果我从Vim内部运行shell命令,请说
:!ls
,退出Vim后,它的输出仍将在shell中可见

我想以类似的方式将Vim中当前缓冲区中选定的行写入shell。也就是说,在我退出Vim后,控制台上应该可以看到这些线。如何做到这一点

例如,要写入第4-10行,此命令没有这样做:
:4,10w!tee

简单地看一下文件怎么样

:!cat %
(针对
:%!cat
,它将只打印到缓冲区)


仅打印选定行:

:execute '!sed -n ' . line("'<") . ',' . line("'>") . 'p %'

:执行“!sed-n'。行(“要在@pacholik的答案(并从评论中回答您的扩展问题)的基础上进行构建,为了只列出视觉选择(或任何其他行范围),您可以使用
sed

:execute printf('!sed -n %d,%dp %%', line("'<"), line("'>"))

:执行printf(“!sed-n%d,%dp%%”,第行(“‘为什么不使用
:!cat%
?@dlmeetei如果我只想写一些选定的行(比如第4行到第10行),该怎么办?”从缓冲区中?也许我想直观地标记这些行,然后再写这些行?太好了,现在您已经相应地更新了问题。这很有效!如果我想从缓冲区中只写一些选定的行(比如第4行到第10行),怎么办?也许我想直观地标记这些行,然后再写这些行?
:execute printf('!sed -n %d,%dp %%', line("'<"), line("'>"))