Sublime Text 2 Vintage:在焦點遺失時保留插入模式

Sublime Text 2 Vintage:在焦點遺失時保留插入模式

我在用著優質的Sublime Text 2 上的模式(Vi 綁定)。

當切換回 ST2 時,我經常因為仍處於插入模式而被咬,導致我輸入“jjjjjjjjjjkkkkkkkkk”。

當 ST2 視窗失去焦點時,有沒有辦法自動離開插入模式並返回命令模式?

答案1

我從未使用過 Sublime Text 2,但看起來它可能有希望……雖然我的 Vim 不會改變{Grin}

下列應該為你工作,當你失去焦點時關閉插入模式,將其命名為“stop_insert_on_focus_lost.py”並將其放置在您的插件資料夾中的某個位置。

希望它能運作,必須掃描 API 和一些範例插件才能取得格式和命令。 (雖然我之前從未見過 ST2...我在幾分鐘內摸索他們的 API、Python 和 Vintage 模式可以獲得積分嗎?)

import sublime, sublime_plugin
import os.path

class StopInsertOnFocusLost(sublime_plugin.EventListener):
    def on_deactivated(self, view):
        view.run_command('exit_insert_mode')

答案2

上面的插件很棒,但存在一個惱人的錯誤,正如其他評論中提到的。當您切換到「尋找」功能表或「轉到任何內容」彈出視窗之類的選單時,您將處於命令/正常模式。更糟的是,命令將無法完全正常工作,因為許多復古模式命令不會在彈出視窗中運行,因此您的情況更加糟糕。

此版本修復了以下問題:

import sublime, sublime_plugin
import os.path

class StopInsertOnFocusLost(sublime_plugin.EventListener):
    def on_deactivated(self, view):
        view.run_command('exit_insert_mode')

    def on_activated(self, view):
        if view.settings().get('is_widget') == True:
            view.run_command('enter_insert_mode')

感謝起始代碼的原始答案!

答案3

我還有這個要提供:

import sublime, sublime_plugin
import os.path

class StopInsertOnFocusLost(sublime_plugin.EventListener):
    def on_deactivated(self, view):
        if view.file_name() and not view.settings().get('command_mode'):
            view.run_command('exit_insert_mode')

改編自洛尼克斯的答案——修復了一些邊緣情況。為其命名stop_insert_on_focus_lost.py並將其新增至 下方Packages

相關內容