繁体   English   中英

vim:有没有办法预处理由copen打开的文件

[英]vim: is there a way to preprocess a file opened by copen

我正在尝试使用 errorformat 来缩短代码编译代码循环。 我的设置是这样的:

  1. 我的编辑器 (vim) 所在的 MacOS。 连同 git 等。除了编译器 (VCS) 之外的所有内容。
  2. 在同一台计算机上运行的 Ubuntu VM。
  3. 两者之间共享的文件夹。 它在 MacOS 上挂载为 ~/projects/my_proj,在 VM 上挂载为 /media/psf/projects/my_proj。

我的工作流程:

  1. 在 MacOS 上编辑代码。
  2. 将 SSH 命令发送到 VM 以编译代码并将结果转储到 /media/psf/projects/my_proj/results 中:
ssh remote_user@remote_host cd /media/psf/projects/my_proj/results; vcs <options_string> -f filelist.f
  1. 检查日志和编辑错误的结果。

在上述工作流程的第 3 步中,我想使用 quickfix 来扫描日志文件。 我发现:cfile 可以加载文件。

但是,VM 上的编译器使用绝对路径写出文件路径:

/media/psf/projects/my_proj

当我尝试在 MacOS 上将其读入 vim 时,/media/psf/projects 不存在。 并且 vim 无法显示错误。

我可以预处理日志文件(替换所有文件夹路径),吐出中间日志文件并运行:cfile 的最佳方法是什么(vimscript?宏?)?

您问题的信噪比很低。 以下是我对您的问题的理解:

  • 你有一个带有共享目录的虚拟机,
  • 您项目的代码位于该目录中,
  • 目录是 VM 中的/media/psf/和主机中的~/projects/foobar/
  • 当编译器输出错误时,路径以/media/psf/开头,
  • 当您在主机上的 Vim 中提取这些错误时, /media/psf/不存在,因此 Vim 无法跳转到错误,
  • 在将错误列表输入 Vim 之前或期间,您需要一种将/media/psf/转换为~/projects/foobar/的方法。

以下解决方案假定从 VM 检索到的错误列表保存到共享目录根目录下名为errorfile的文件中:

:cexpr readfile('~/projects/foobar/errorfile')->join("\n")->substitute('/media/psf/', '~/projects/foobar/', 'g')

参考:

:help :cexpr
:help readfile()
:help join()
:help substitute()

FWIW,告诉您的编译器将错误列表写入上述文件将允许您从工作流程中删除 SSH 步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM