如何从命令行打开文件并在Sublime上选择/突出显示几行?

时间:2017-06-14 21:21:50

标签: command-line sublimetext3

我知道subl myfile.txt:5会在第5行打开“myfile.txt”。但我希望能够从命令行打开一个突出显示或选择了第5,9,15行的文件。我知道添加-command应该让我这样做,但是如何?命令是什么?

1 个答案:

答案 0 :(得分:1)

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

(从技术上讲,它可以使用默认包中的书签功能,以及内置的"扩展选择到行"功能。但是,经验表明,它会更好,更可靠。在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. 该命令可以在加载文件之前执行。
  3. 可以说,对于subl的多次调用,第2点仍然可能发生,但希望它不太可能发生。 ST错误跟踪器存在一个未解决的问题,可以更好地进行命令行命令处理:https://github.com/SublimeTextIssues/Core/issues/1457