Sublime Text:如何自动打开某些文件扩展名的特定编码?
Sublime Text: How to automatically open with specific encoding for some file extensions?
有什么方法可以强制 sublime (ST3) open/reopen 某种具有特定编码的文件吗?我的问题是:我不希望 ST3 显示特定文件扩展名的内容(即 .log、.dump 和我的任何其他自定义文件)。目前的解决方案是通过view.set_encoding()方法手动设置编码为Hexadecimal。在这次讨论中提出了另一个解决方案。但它似乎只在文件打开后才设置编码。有什么方法可以自动打开或重新打开那些十六进制编码的文件吗?
注意:我已将 default_encoding 设置为 UTF-8 并回退到十六进制。由于 ST3 将我的自定义文件的内容检测为 UTF-8,因此显示了内容。我只是想让 ST3 显示某种自定义文件的十六进制视图,并且必须手动将编码更改为 show/modify 内容。
非常感谢您的帮助,
演示:
代码:
保存这个@Packages/YourPluginName/YourPluginName.py
import sublime, sublime_plugin
class EventListener( sublime_plugin.EventListener ):
def on_load ( self, view ):
fileExtension = view.window().extract_variables() [ "file_extension" ]
encodingSets = \
{
"log" : "Hexadecimal",
"dump" : "Hexadecimal",
}
if fileExtension in encodingSets:
encoding = encodingSets[ fileExtension ]
view.run_command ( "reopen", { "encoding" : encoding } )
备注:
我在 This Thread 找到了 reopen + encoding
命令,并将其包装在 on_load
EventListener
中,您可以在其中定义扩展的键值对及其相关编码。
由于文件是在活动缓冲区中重新打开的,因此可以很容易地使用库存键绑定重置编码 ctrl + z
。如果你想让它更安全,你可能想找到一种方法来克服这个漏洞。我研究了禁用撤消堆栈和创建特定于语法的键绑定,但没有找到任何快速结果。尝试进一步研究那些和类似的主题,如果您找不到其他解决方案,也可以考虑重新映射您的 ctrl + z
命令。
编码:
这是 Sublime Text 中可接受的编码列表:
"Hexadecimal"
"UTF-8"
"UTF-16 LE"
"UTF-16 BE"
"Western (Windows 1252)"
"Western (ISO 8859-1)"
"Western (ISO 8859-3)"
"Western (ISO 8859-15)"
"Western (Mac Roman)"
"DOS (CP 437)"
"Arabic (Windows 1256)"
"Arabic (ISO 8859-6)"
"Baltic (Windows 1257)"
"Baltic (ISO 8859-4)"
"Celtic (ISO 8859-14)"
"Central European (Windows 1250)"
"Central European (ISO 8859-2)"
"Cyrillic (Windows 1251)"
"Cyrillic (Windows 866)"
"Cyrillic (ISO 8859-5)"
"Cyrillic (KOI8-R)"
"Cyrillic (KOI8-U)"
"Estonian (ISO 8859-13)"
"Greek (Windows 1253)"
"Greek (ISO 8859-7)"
"Hebrew (Windows 1255)"
"Hebrew (ISO 8859-8)"
"Nordic (ISO 8859-10)"
"Romanian (ISO 8859-16)"
"Turkish (Windows 1254)"
"Turkish (ISO 8859-9)"
"Vietnamese (Windows 1258)"
* 摘自 Packages\Default\Encoding.sublime-menu
*
有什么方法可以强制 sublime (ST3) open/reopen 某种具有特定编码的文件吗?我的问题是:我不希望 ST3 显示特定文件扩展名的内容(即 .log、.dump 和我的任何其他自定义文件)。目前的解决方案是通过view.set_encoding()方法手动设置编码为Hexadecimal。在这次讨论中提出了另一个解决方案。但它似乎只在文件打开后才设置编码。有什么方法可以自动打开或重新打开那些十六进制编码的文件吗?
注意:我已将 default_encoding 设置为 UTF-8 并回退到十六进制。由于 ST3 将我的自定义文件的内容检测为 UTF-8,因此显示了内容。我只是想让 ST3 显示某种自定义文件的十六进制视图,并且必须手动将编码更改为 show/modify 内容。
非常感谢您的帮助,
演示:
代码:
保存这个@Packages/YourPluginName/YourPluginName.py
import sublime, sublime_plugin
class EventListener( sublime_plugin.EventListener ):
def on_load ( self, view ):
fileExtension = view.window().extract_variables() [ "file_extension" ]
encodingSets = \
{
"log" : "Hexadecimal",
"dump" : "Hexadecimal",
}
if fileExtension in encodingSets:
encoding = encodingSets[ fileExtension ]
view.run_command ( "reopen", { "encoding" : encoding } )
备注:
我在 This Thread 找到了 reopen + encoding
命令,并将其包装在 on_load
EventListener
中,您可以在其中定义扩展的键值对及其相关编码。
由于文件是在活动缓冲区中重新打开的,因此可以很容易地使用库存键绑定重置编码 ctrl + z
。如果你想让它更安全,你可能想找到一种方法来克服这个漏洞。我研究了禁用撤消堆栈和创建特定于语法的键绑定,但没有找到任何快速结果。尝试进一步研究那些和类似的主题,如果您找不到其他解决方案,也可以考虑重新映射您的 ctrl + z
命令。
编码:
这是 Sublime Text 中可接受的编码列表:
"Hexadecimal"
"UTF-8"
"UTF-16 LE"
"UTF-16 BE"
"Western (Windows 1252)"
"Western (ISO 8859-1)"
"Western (ISO 8859-3)"
"Western (ISO 8859-15)"
"Western (Mac Roman)"
"DOS (CP 437)"
"Arabic (Windows 1256)"
"Arabic (ISO 8859-6)"
"Baltic (Windows 1257)"
"Baltic (ISO 8859-4)"
"Celtic (ISO 8859-14)"
"Central European (Windows 1250)"
"Central European (ISO 8859-2)"
"Cyrillic (Windows 1251)"
"Cyrillic (Windows 866)"
"Cyrillic (ISO 8859-5)"
"Cyrillic (KOI8-R)"
"Cyrillic (KOI8-U)"
"Estonian (ISO 8859-13)"
"Greek (Windows 1253)"
"Greek (ISO 8859-7)"
"Hebrew (Windows 1255)"
"Hebrew (ISO 8859-8)"
"Nordic (ISO 8859-10)"
"Romanian (ISO 8859-16)"
"Turkish (Windows 1254)"
"Turkish (ISO 8859-9)"
"Vietnamese (Windows 1258)"
* 摘自 Packages\Default\Encoding.sublime-menu
*