【问题标题】:How to open a file and select/highlight several lines on Sublime from the command line?如何从命令行打开文件并在 Sublime 上选择/突出显示几行?
【发布时间】:2017-06-14 21:21:49
【问题描述】:

我知道 subl myfile.txt:5 会在第 5 行打开“myfile.txt”。但是我希望能够从命令行打开一个文件,其中突出显示或选择了第 5、9、15 行。我知道添加 –command 应该可以让我做到这一点,但是怎么做呢?命令是什么?

【问题讨论】:

    标签: command-line sublimetext3


    【解决方案1】:

    据我所知,没有内置命令可以做到这一点,但可以轻松创建。

    (从技术上讲,可以使用 Default 包中的书签功能和内置的“将选择扩展到行”功能来完成。但是,经验表明,在 ST 中编写命令会更好、更可靠专门用于此目的。)

    在 ST:

    • 从工具菜单 -> 开发人员 -> 新插件...
    • 全选并替换为以下内容
    import sublime
    import sublime_plugin
    
    
    class SelectSpecificLinesCommand(sublime_plugin.TextCommand):
        def run(self, edit, lines):
            self.view.sel().clear()
            for line in lines:
                position = self.view.text_point(int(line) - 1, 0) # internally, line numbers start from 0
                self.view.sel().add(self.view.line(position))
    
    • 将其保存在 ST 推荐的文件夹 (Packages/User/) 中,例如 select_lines.py(文件扩展名很重要)。
    • subl myfile.txt
    • subl --command "select_specific_lines { \"lines\": [5, 9, 15] }"(这种转义 JSON 字符串引号的方式适用于 Windows 命令提示符和 Linux 的 Bash)

    为什么我在单独的行中指定命令/调用subl?由于这两个警告:

    1. ST 必须已经在运行,否则命令行中指定的命令可能无法执行,因为尚未加载插件。
    2. 该命令可以在文件加载之前执行。

    可以说,第 2 点仍然可能在多次调用 subl 时发生,但希望它不太可能发生。为了更好地处理命令行命令,ST 错误跟踪器上有一个未解决的问题:https://github.com/SublimeTextIssues/Core/issues/1457

    【讨论】:

    • 优秀的答案。完美运行。谢谢
    猜你喜欢
    • 2017-03-31
    • 2013-09-07
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多