我使用 vim 并希望在 Powershell中使用它来模拟更少。所以我想写一个PowerShell函数来包装它。
Vim 有一个less 模式。要使用它,我只需要发出这样的命令:
type somefile.txt | vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -
但是 PowerShell 函数似乎没有办法让我从管道中获取标准输出。有什么提示吗?
我使用批处理文件(less.bat)解决了这个问题,如下所示:
cmd /c vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -
你可以像这样使用它:
type somefile.txt | less
请注意,如果您还需要使用以下方式调用 less,则需要对批处理文件中的参数进行条件测试。
less somefile.txt
但是 PowerShell 函数似乎没有办法让我从管道中获取标准输出。
只是一个提示,因为我不完全理解你的管道是如何工作的。无论如何,您知道 ValueFromPipeLine* 装饰吗?
function less {
param(
[Parameter(ValueFromPipeLine=$true)]
$input
)
process {
##concatenate strings here, or process whatever vim sends into the pipeline
}
}