gpt4 book ai didi

windows - 在 Windows 上通过外部程序过滤行不返回任何内容

转载 作者:可可西里 更新时间:2023-11-01 11:36:58 25 4
gpt4 key购买 nike

在 Windows 上的 Vim 中,我试图通过 shell 可执行文件过滤文件中的行。我正在使用以下命令:

:0,$!sort

我的想法是使用 Windows sort 命令对文件的行进行排序。

问题是我什么也得不到,所以实际上,文件中的所有行都被删除了,即它们被什么都没有替换(我可以使用 undo u 恢复所有行)。

在 Vim 之外,以下命令工作正常:

type sort-lines.txt | sort

(“sort-lines.txt”是我在 vim 中使用的测试文件。)

我已经用 Windows sort 命令和 Cygwin sort 命令试过了。结果是一样的。

有趣的是,如果我在 Vim 中使用以下命令:

:0,$!dir

文件的行被替换为 dir 命令的输出。这让我认为外部程序正在执行,但它没有正确接收来自文件的输入行。

是否需要在我的配置中进行一些调整才能使其正常工作?我检查了 Vim 的 shellpipe 选项的值,它被设置为:

shellpipe=>%s 2>&1

这对我来说似乎不对。

最佳答案

好的,我找到问题了。

我的注册表中设置了一个 Autorun CMD 脚本。每当 vim 启动 CMD 来运行过滤器时,Autorun 脚本就会运行并以某种方式阻止管道输入的数据进入。

为了解决这个问题,我更改了 vim“shell”变量的值。这是我设置的。

:set shell=C:\Windows\system32\cmd.exe\ /d

/d 告诉 CMD 不要运行任何自动运行脚本。为了转义 cmd.exe 和/d 之间的空格字符,“cmd.exe”后的额外反斜杠是必要的。

有了这个设置,过滤就可以正常工作了。

有关自动运行和/d 选项的讨论,请参阅 this MSDN article

谢谢 Darcy,为我指明了正确的方向。 (顺便说一句,你的姓氏很棒。)

关于windows - 在 Windows 上通过外部程序过滤行不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com