我安装了 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。