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

twh*_*whb 5 sublimetext sublimetext3

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

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

Kei*_*all 5

.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'))
Run Code Online (Sandbox Code Playgroud)

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

这个想法是,当创建新选项卡或语法更改为纯文本时,它会将设置设置default_extensiontxt. 如果语法更改为其他内容,它将删除default_extension.


要更改语法的默认文件扩展名,需要更改文件.sublime-syntax重新排序文件扩展名集,以便默认扩展名位于列表中的第一个。(使用default_extension之前引用的内容是不可靠的。)

因此,对于 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
    
    Run Code Online (Sandbox Code Playgroud)
  8. 更改它,使其md位于顶部:

    file_extensions:
      - md
      - mdown
      - markdown
      - markdn
    
    Run Code Online (Sandbox Code Playgroud)
  9. 保存文件

然后,当您创建新选项卡时,将语法设置为 Markdown 并保存,它将默认为.md文件扩展名。

请注意,如果您认为更改默认值也能让其他人受益并且希望查看存储库维护者的反应,您可以尝试在相关的 GitHub 存储库中创建问题/PR。