如何在Vim中通过* .log中的路径打开另一个文件

时间:2019-02-15 07:29:13

标签: vim

我使用Vim读取* .log文件。 我想快速打开这些引用的源文件。

下面是我的日志文件的一部分。

------------------------------
// ...
   at clquo.infrastructure.serviceagents.httpclientwrapper.sendasync(httprequestmessage httprequest, cancellationtoken token) in w:\q\main\httpclientwrapper.cs:line 61
   at clquo.infrastructure.serviceagents.webapiclient.executerequest[tresult](uri route, httprequestmessage httprequest) in w:\q\main\webapiclient.cs:line 92
// ...
------------------------------

现在,我想以垂直分割快速打开文件“ w:\ q \ main \ httpclientwrapper.cs ”。

不是键入“ :split w:\ q \ main \ httpclientwrapper.cs ”命令,而是有一些快速方法可以直接在vim中打开文件? 我很懒。我不想输入完整路径。

2 个答案:

答案 0 :(得分:0)

将光标移到文件名上,然后单击gf

从Vims帮助中:

  

编辑名称在光标下方或之后的文件。助记符:“转到文件”。

请参见:help gf

您还可以直观地选择文件名,然后点击gf。参见:help v_gf

要在新窗口(也称为拆分)中打开文件,请使用<C-w><C-f>。  是'Ctrl + w'  是“ Ctrl + f”

答案 1 :(得分:0)

由于错误是附加在文件规范后面的:line,因此您将遇到一个特定于Windows样式文件名的问题:

  • 您可以从'isfname'选项(:)中删除:set isfname-=:字符,但是驱动器号部分也将被排除,因此您可以有效地只能从同一驱动器中打开文件。
  • 您可以使用gf视觉模式变体(如@Ralf的回答所建议的那样),但这需要手动选择。
  • 如果解析的文件规范不存在,
  • Vim会退回到'includeexpr'。这样,您可以自动删除结尾的:line
:set includeexpr=substitute(v:fname,':line$','','')