如何在Sublime Text中为用户的构建系统创建快捷方式?

时间:2014-03-14 10:58:27

标签: keyboard-shortcuts sublimetext

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

{
    "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

3 个答案:

答案 0 :(得分:4)

我自己钉了它。

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进行编译。

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

答案 1 :(得分:3)

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

"selector": "text.tex.latex"

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

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

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

现在,无论何时打开LaTeX文件, 都能能够点击 F1 进行构建。如果由于某种原因它不起作用(例如,如果你有像LaTeXTools这样的插件安装LaTeX的其他构建系统),那么只需选择Tools -> Build Systems -> XeLaTeX,一切都应该正常工作。

答案 2 :(得分:0)

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