【问题标题】:Browsing lines/columns in a big file in VSCode在 VSCode 中浏览大文件中的行/列
【发布时间】:2020-12-03 02:38:15
【问题描述】:

我使用大型平面数据库文件,我喜欢在行/列处检查这些文件。

我有一个工具可以生成包含数百行的日志,例如:

code --goto path/to/my/file:line:column

如果我将这样的一行放入命令行窗口并从那里单击它,而不是从编辑器中单击它(至少我还没有找到方法),那么访问这样一个位置就可以了

我希望能够在 VSCode 编辑器中打开此日志文件,并在每一行中悬停/单击,这会将我带到我想在大 db 文件中访问的位置。这可能吗?

我应该将我的日志文件转换成某种支持悬停和点击功能的脚本格式吗?

是否有其他可用的扩展程序可以在这里解决问题?

非常感谢。 米格尔

编辑

使用 HTML 相关链接 v0.9.0

我想我们快到了,但它仍然不适合我。

我的具体场景是:我有一个文件

d:\Users\Abc.def\Git\lingware-data\test\spx\spm\spm_cfg3\spm_cfg3_tst_row_valid_lng_abbr.dbr

包含几行的类型

code --goto d:\Users\Abc.def\Git\lingware-data\dct\spx\dct.u08:176:36

(可能code 是不需要的,有没有我都试过了)

在我的settings.json 文件中:

"files.associations": { ".u08": "csv (pipe)", ".dbr": "html" },
"editor.largeFileOptimizations": false,
"html-related-links.include": {
   "html": [
      { "find": "--goto ([a-z:]+[^:]+):(\\d+):(\\d+)",
        "filePath": "$1",
        "lineNr": "$2",
        "charPos": "$3"
      }
   ]
}

如果我使用 "plaintext" 作为语言 ID,我没有在资源管理器区域中显示 HTML 相关链接部分,所以我使用 "html" - 我已更新到扩展程序的 v0.9.0,我继续在资源管理器视图中看到的是:

"d:\Users\Abc.def\Git\lingware-data\dct\spx\dct.u08 d:\Users\Abc.def\Git\lingware-data\test\spx\spm\spm_cfg3\d:\Users\Abc.def\Git\lingware-data\dct\spx\dct.u08"

如果我点击它没有任何反应,我希望这或多或少清楚。

我做错了什么?

*** 编辑 *** 已安装 v0.9.1。启用开发人员控制台以调试行上的点击行为。现在得到的是:

[Extension Host] Clicked on: d:\Users\Miguel.Duran\Git\lingware-data\dct\spx\dct.u08
console.ts:137 [Extension Host]     goto: 175:28

【问题讨论】:

    标签: visual-studio-code vscode-settings


    【解决方案1】:

    您可以使用扩展名HTML Related Links v0.9.0(它不仅适用于HTML)

    settings.json中定义这个

    "html-related-links.include": {
        "plaintext": [
          { "find": "--goto ([^:]+):(\\d+):(\\d+)",
            "filePath": "$1",
            "isAbsolutePath": true,
            "lineNr": "$2",
            "charPos": "$3"
          }
        ]
      },
    "html-related-links.removePathFromLabel": true
    

    加载日志文件后,您可以将资源管理器视图HTML RELATED LINKS 锁定到该文件。使用视图右上角的锁定按钮。现在只有对此日志文件的更改才会更新视图。

    在绝对路径中,标签将包含路径,视图在末尾添加目录路径。您可以使用设置html-related-links.removePathFromLabel从标签中删除路径

    单击视图中的一行,该文件将打开到给定的line:char 位置。

    如果在 Windows 上路径是绝对路径,则必须先指定驱动器,因为它包含 :

    "find": "--goto ([a-z]:[^:]+):(\\d+):(\\d+)"
    

    编辑

    正则表达式字符串中有一个小错字(需要转义转义字符)。

    增加绝对路径的可能性。

    【讨论】:

    • 谢谢,这是一个有趣的选择。我按照建议安装了扩展并配置了 html-related-links.include 。我必须使用“html”并将我的日志文件也重命名为 .html,否则它不会被解析。我现在的问题是构建的 filePath 是 path/to/my/log_file + path 在“find”属性中给出的连接。我的日志文件可以存储在任何地方,并且已经包含要访问的文件的绝对路径,因此它不应该干扰构建路径。你能帮我澄清一下我应该如何正确设置它吗?谢谢。
    • 我查看了代码,现在只允许相对路径,我将修改扩展名并允许使用完整路径规范。现在只允许工作区中的路径。无需全部设置为html,找出log文件的languageId是什么(见右下状态栏)
    • @Miguel 看看 v0.9.0
    • @Miguel 我已经使用以前的 cmets 编辑了您的问题,使其更具可读性。仔细查看答案的settings.json 部分,您忘记添加"isAbsolutePath": true, 并且"html-related-links.removePathFromLabel": true 也很方便,如果您将鼠标悬停在视图中的一行上,您将获得一个工具提示,其中包含它将尝试加载的文件点击时
    • @Miguel 关于语言 ID,尝试将 "html-related-links.alwaysShow": true 添加到 settings.json 并在配置中使用 plaintext
    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 2018-04-28
    • 2012-03-01
    • 2011-09-30
    • 2011-12-20
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多