Да, вы можете просто написать плагин, чтобы установить представление как царапину и закрыть его. Затем создайте привязку клавиш для этой команды. Выберите Инструменты> Разработчик> Новый плагин ... и вставьте:
import sublime_plugin
class CloseWithoutSavingCommand(sublime_plugin.WindowCommand):
def run(self):
view = self.window.active_view()
view.set_scratch(True)
view.close()
Затем создайте привязку клавиш для перезаписи ctrl + w
{
"keys": ["ctrl+w"],
"command": "close_without_saving",
},
PS. Как упомянуто в комментариях @ Dreamcat4, также может быть целесообразным ограничить привязку клавиш временными буферами. В этом случае вы можете легко создать прослушиватель контекста, который включает привязку клавиш только для этого типа файла:
import operator as opi
import sublime
import sublime_plugin
class CloseWithoutSavingCommand(sublime_plugin.WindowCommand):
def run(self):
view = self.window.active_view()
view.set_scratch(True)
view.close()
class IsRealFileListener(sublime_plugin.EventListener):
def on_query_context(self, view, key, operator, operand, match_all):
# only act with the correct context key
if key != 'user.is_real_file':
return
if operator == sublime.OP_EQUAL:
op = opi.eq
elif operator == sublime.OP_NOT_EQUAL:
op = opi.ne
else:
# operator not supported
return
# assumption: a real file is a buffer, which has a filename as target
is_real_file = bool(view.file_name())
return op(is_real_file, operand)
Создайте привязку клавиш для перезаписи ctrl + w, но ограничивайтесь контекстом
{
"keys": ["ctrl+w"],
"command": "close_without_saving",
"context": [
{ "key": "user.is_real_file", "operator": "equal", "operand": false }
],
},