Powershell:可以将stdout重定向到PowerShell函数吗?

时间:2013-01-03 06:41:55

标签: redirect powershell

我使用vim并希望在Powershell中使用它来模仿less。所以我想写一个PowerShell函数来包装它。

Vim有less mode。要使用它我只需要发出这样的命令:

type somefile.txt | vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -

然而,PowerShell功能似乎没有办法让我从管道中获取标准输出。任何提示?

2 个答案:

答案 0 :(得分:0)

我使用批处理文件(less.bat)解决了这个问题,如下所示:

cmd /c vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -

您可以像以下一样使用它:

type somefile.txt | less

请注意,如果您还需要使用以下方式调用less,则需要对批处理文件中的参数进行条件测试。

less somefile.txt

答案 1 :(得分:0)

  

然而,PowerShell功能似乎没有办法让我接受   来自管道的stdout。

只是一个提示,因为我不完全了解你的管道是如何工作的。 无论如何,你知道ValueFromPipeLine *装饰吗?

function less {
 param( 
 [Parameter(ValueFromPipeLine=$true)]
  $input
 )
 process {
    ##concatenate strings here, or process whatever vim sends into the pipeline
 }
}

...Related Question?