【问题标题】:How to create a shortcut for user's build system in Sublime Text?如何在 Sublime Text 中为用户的构建系统创建快捷方式?
【发布时间】:2014-03-14 10:58:26
【问题描述】:

我刚刚创建了一个名为XeLaTeX的构建系统,在Sublime Text的User目录下创建了一个名为XeLaTeX.sublime-build的文件,其内容为:

{
    "cmd": ["xelatex.exe","-synctex=1","-interaction=nonstopmode","$file_base_name"]
}

如果我想将我的 F1 键绑定到这个特定的构建系统,我应该怎么做?

注意:Ctrl + B,不应该影响默认的构建系统。也就是说,我可以使用Ctrl + B来使用默认的,同时新系统的键F1也可用。


也许还有另一种方法可以实现这一点。将以下文本添加到Default(Windows).sublime-keymap 将执行命令:

{"keys": ["f1"], "command": "exec", "args": {"cmd": ["xelatex.exe","-synctex=1","-interaction=nonstopmode","$file_base_name"]}},

但是,$file_base_name 未在此处定义。有什么方法可以将当前文件(base_)名称传递给exec

【问题讨论】:

    标签: keyboard-shortcuts sublimetext


    【解决方案1】:

    我自己搞定的。

    AFAIK,没有这种方法可以通过键绑定传递当前文件名,也不可能使用键绑定来指定某个构建系统。因此,编写 Python 脚本是很有必要的。

    只有三个步骤。

    1.将以下内容保存到/Data/Package/User/compile_with_xelatex.py

    import sublime, sublime_plugin
    
    class CompileWithXelatexCommand(sublime_plugin.TextCommand):
       def run(self, edit):
          self.view.window().run_command('exec', {'cmd': ["xelatex.exe","-synctex=1","-interaction=nonstopmode", self.view.file_name()[:-4]]})
    

    2./Data/Packages/User/Default(<your-plat>).sublime-keymap添加一行

    {"keys": ["f1"], "command": "compile_with_xelatex"},
    

    3. 用 Sublime Text 打开你的 LaTeX 源文件,然后按 F1 用 XeLaTeX 编译它。

    确实,这有点棘手,但它对我来说就像一个魅力。

    【讨论】:

    • 我使用了这个脚本的修改来让 Sublime Text 与 Black(格式化程序)一起运行。谢谢。
    【解决方案2】:

    构建系统的工作方式是在Tools -> Build System 菜单中专门选择它们,或者使用选择器来匹配特定的语法。如果您想使用选择器,请将以下行添加到您的 XeLaTeX.sublime-build 文件中(确保在第一行之后添加逗号 ,,该文件需要是有效的 JSON):

    "selector": "text.tex.latex"
    

    build 命令已经绑定到 CtrlBF7,但如果您还希望它绑定到 F1 ,如果您已经有自定义键绑定,请打开 Preferences -> Key Bindings-User 并添加以下行:

    { "keys": ["f1"], "command": "build" }
    

    如果文件为空,只需在文件的开头和结尾分别添加左方括号[ ],因为它也需要是有效的JSON。

    现在,每当您打开 LaTeX 文件时,您应该能够按 F1 来构建它。如果由于某种原因它不起作用(例如,如果您通过 LaTeXTools 等插件安装了其他 LaTeX 构建系统),那么只需选择 Tools -> Build Systems -> XeLaTeX,一切都应该正常工作。

    【讨论】:

    • 谢谢你的回答,但恐怕这不是我想要的。我有两个专为 LaTeX 设计的构建系统,例如 LaTeXmkXeLaTeX。由于LaTeXmk 会编译源文件三次甚至更多次,浪费大量时间,因此需要一种可以手动指定构建系统的方法。
    • 这里也一样。我有两个“source.java”构建,一个编译当前文件,一个编译当前目录中的所有文件。因为有两个,“工具>构建”是不可点击的。我的解决方法是使用“Alt > T > U > J > Enter”编译当前文件,使用“... J > J ...”编译所有文件。
    【解决方案3】:

    如果您提供参数“$file_basename”而不是“$file_base_name”,您的示例将起作用。

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2015-11-27
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多