git - 当我执行 git commit --verbose 时,将语法设置为 diff in sublime text 2

标签 git syntax sublimetext2

我采取的第一步是设置 git 以使用 Sublime Text 2 作为我的编辑器。

git config --global core.editor "subl -n -w"

每次我执行“git commit --verbose”时都会打开 Sublime Text 2,但是如何让 Sublime Text 2 自动打开已设置差异语法的 COMMIT_EDITMSG 文件?

我知道一种解决方案是将所有纯文本文件设置为使用差异语法打开,但我不想这样做,因为来自 COMMIT_EDITMSG 的纯文本文件以外的纯文本文件不应该具有差异语法。

非常感谢你帮助我!

最佳答案

这可以通过一个简单的插件来实现,该插件可以在加载文件时捕获并根据文件名设置适当的语法。

为此,从菜单中选择Tools > New Plugin...,将示例代码替换为下面的代码,然后将其保存为 py 文件Sublime 默认的位置(例如 diff_syntax_setter.py):

import sublime, sublime_plugin

class DiffListener(sublime_plugin.EventListener):
    def on_load(self, view):
        if view.file_name() is not None:
            if view.file_name().endswith("COMMIT_EDITMSG"):
                view.settings().set("syntax", 'Packages/Diff/Diff.tmLanguage')

现在每次加载以名称 COMMIT_EDITMSG 结尾的文件时,语法将自动设置为 Diff 语法。

虽然菜单命令的位置已更改为 Tools > Developer > New Plugin... 代替。

这里需要注意的是,在 Sublime Text 2 中,编辑器的启动包括在从命令行执行命令(例如打开文件)之前加载所有插件。

在 Sublime Text 3 中,启动更加简化,因为编辑器在插件仍在加载时启动并可用。这使得启动速度更快,因为不会等待插件加载,但这意味着在加载自定义插件之前文件已经打开。

因此,虽然这在 Sublime Text 3 中有效,但它仅在 Sublime 已经运行时有效,如果命令导致 Sublime 重新启动则无效。

关于git - 当我执行 git commit --verbose 时,将语法设置为 diff in sublime text 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28924023/

相关文章:

c - 使用: operator in C

c++ - C++中 "Class<>"是什么意思?

html - 如何在 emmet 中创建自己的命令?

git - 如何将本地未提交的更改 merge 到另一个 Git 分支?

git - 使用新的 .gitignore 文件重新同步 git repo

c# - 前面的类声明 C# 语法,如 [SomeType (someArg1, ..., someArgN)]

javascript - Sublime Text 2 : Auto fix indentation for javascript?

git - 在 git-flow 中,为什么 master 甚至存在?

git - 组合 git `continue` 命令

sublimetext2 - 在 Sublime Text 2 中禁用或覆盖 JSLint 选项