如何在 Windows 上的 vim 中使用 :perldo?

如何在 Windows 上的 vim 中使用 :perldo?

我安装了 Git Bash,并且已预装了 vim。我个人宁愿使用 PCRE 而不是 vim 的正则表达式,因此我尝试执行:perldo /s/foo/bar。错误是找不到msys-perl5_24.dll。我查看了一下/usr/bin,发现 似乎msys-perl5_26.dll就在那里。

我发现这个存储库msys 软件包并安装perl-5.24.4-1-x86_64.pkg.tar.xz。我提取了它并/usr/bin用我刚刚提取的文件替换了中的文件。现在,我收到错误ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0x60029da70, needed 0x0)。我假设需要更新标题,/usr/lib/perl5但我不确定在哪里可以找到标题。有没有更简单的方法可以:perldo在 vim 中工作?或者它与他们编译 Git Bash 的方式有关?

答案1

您可以尝试更改'perldll'Vim 设置指向系统中存在的库。

也许是这样的:

:set perldll=msys-perl5_26.dll

或者也许使用它的完整路径。

如果 Perl 5.24 和 5.26 的符号足够相似(或者,至少 5.26 具有 5.24 中的所有符号,这是一个不错的选择),它可能会起作用。

或者这与他们编译 Git Bash 的方式有关?

是的,很可能确实如此,它可能是他们在构建系统上安装的 Perl 版本,因此该名称被硬编码为要查找的库。

有没有更简单的方法:perldo在 vim 中工作?

您可以使用:{range}!命令通过外部命令过滤范围,在这种情况下,您可以直接调用外部 Perl 二进制文件。

例如:

:%!perl -lpe 's/foo/bar/'

或者你也可以使用Vim 正则表达式在许多情况下,它们可以像 PCRE 一样强大。您可能对以下内容感兴趣修饰语\v,这使得 Vim 正则表达式“非常神奇”,在这种情况下您不需要使用反斜杠来访问大多数元字符,从而使它们更像 PCRE。

相关内容