
estou a usarVintagemodo (ligações Vi) no Sublime Text 2.
Ao voltar para ST2, sou regularmente mordido por ainda estar no modo de inserção, resultando em entrar "jjjjjjjjjjjkkkkkkkkk".
Existe uma maneira de sair automaticamente do modo de inserção e voltar ao modo de comando quando a janela ST2 perde o foco?
Responder1
Eu nunca usei Sublime Text 2, mas parece que pode ser promissor... embora não mude do meu Vim {Grin}
A seguirDEVEtrabalho para você desligar o modo de inserção quando perder o foco, nomeie-o "stop_insert_on_focus_lost.py" e coloque-o em algum lugar da sua pasta de plugins.
Espero que funcione, tive que verificar a API e alguns de seus plug-ins de exemplo para obter o formato e os comandos. (nunca vi ST2 antes... ganho pontos por grocar seu modo API, Python e Vintage em alguns minutos?)
import sublime, sublime_plugin
import os.path
class StopInsertOnFocusLost(sublime_plugin.EventListener):
def on_deactivated(self, view):
view.run_command('exit_insert_mode')
Responder2
O plugin acima é ótimo, mas apresenta um bug irritante, conforme mencionado nos outros comentários. Quando você muda para algo como o menu localizar ou o pop-up ir para qualquer coisa, você estará no modo comando/normal. O que é pior, os comandos não funcionarão totalmente corretamente porque muitos dos comandos do modo vintage não serão executados em pop-ups, então você está na pior situação dos dois mundos.
Esta versão corrige isso:
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')
Graças à resposta original para o código inicial!
Responder3
Também tenho isto a oferecer:
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')
Adaptado da resposta de Lornix - corrige alguns casos extremos. Nomeie-o stop_insert_on_focus_lost.py
e adicione-o em Packages
.