如何在Sublime Text 3中为语法设置默认文件扩展名?

时间:2015-04-19 23:13:57

标签: sublimetext sublimetext3

我不是要求将语法与文件扩展名相关联,而是将文件扩展名与语法相关联。也就是说,在创建新文件后设置保存文件对话框中建议的文件扩展名,然后设置语法,然后点击保存。

您可以在保存对话框中更改扩展名,但最好不要每次都这样做。

2 个答案:

答案 0 :(得分:4)

默认情况下,为了保存.txt扩展名的纯文本文件,您可以使用一个小插件来实现此目的:

import sublime
import sublime_plugin


class DefaultPlainTextExtensionEventListener(sublime_plugin.EventListener):
    def update_default_extension(self, view, syntax):
        if syntax == 'Packages/Text/Plain text.tmLanguage':
            view.settings().set('default_extension', 'txt')
        elif view.settings().get('default_extension', None) == 'txt':
                view.settings().erase('default_extension')

    def on_new_async(self, view):
        self.update_default_extension(view, view.settings().get('syntax'))

    def on_post_text_command(self, view, command_name, args):
        if command_name == 'set_file_type':
            self.update_default_extension(view, args['syntax'])
        elif command_name in ('paste', 'paste_and_indent'):
            self.update_default_extension(view, view.settings().get('syntax'))

请注意,我们无法使用on_pre_save事件,因为文件对话框已经被触发点显示给用户,并且选择了文件名。

我们的想法是,当创建新标签或将语法更改为纯文本时,它会将default_extension设置为txt。如果语法更改为其他内容,则会删除default_extension

更改语法的默认文件扩展名it requires changing the .sublime-syntax file to re-order the file extensions set there so that the default one is first in the list。 (使用之前引用的default_extension不可靠 - https://github.com/SublimeTextIssues/Core/issues/1527

因此,对于Markdown,您可以执行以下操作将默认值从.mdown更改为.md

  1. 安装PackageResourceViewer(如果尚未安装)
  2. 打开命令选项板
  3. 输入PRV: O
  4. 选择PackageResourceViewer: Open Resource
  5. 选择Markdown
  6. 选择Markdown.sublime-syntax
  7. 找到它所说的位置:

    file_extensions:
      - mdown
      - markdown
      - markdn
      - md
    
  8. 更改它以便md位于顶部:

    file_extensions:
      - md
      - mdown
      - markdown
      - markdn
    
  9. 保存文件
  10. 然后,当您创建新标签时,将语法设置为Markdown并保存,它将默认为.md文件扩展名。

    请注意,您可以尝试在相关的GitHub回购中创建问题/ PR,如果您认为更改默认值也可以使其他人受益,并希望看到回购客户的反应。

答案 1 :(得分:0)

您是否还尝试将.txt.设置为保存纯文本文档时的默认文件扩展名?我环顾四周,据我所知,目前还不可能这样做。遗憾的是,默认的Plain Text内容类型似乎是唯一一个不会默认为其特定.txt扩展名的内容类型,即使它存在于另存为类型下拉列表中strong>另存为窗口:

Plain Text documents have a filetype set, but Sublime never uses it

我已经看到推荐AdvancedNewFile插件作为解决此方法的方法,但我没有任何个人经验。