如果我将 :ls 的输出粘贴到缓冲区中,则命令

:%s/.*\(\".*\"\).*/\1/

将该输出减少到仅文件路径。想要在变量中实现该结果,我做到了
:redir => x|silent :ls|redir END
:let y = substitute(x, ".*\(\".*\"\).*", "\1", "g")

这完全没有完成,y 与 x 相同。我已经在该替代命令上尝试了无数变体,但得到的结果都是一样的,或者是一堆错误消息。我应该如何指定它?

最佳答案

您需要在引号中转义反斜杠。将 \\(\\\"substitute() 一起使用。

关于regex - Vimscript : regex works in :s but not in substitute(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7699027/

10-11 11:20