Sublime Text 2 Vintage: Deixe o modo de inserção no foco perdido

4

Estou usando o modo Vintage (ligações Vi) no Texto sublime 2.

Ao voltar para o ST2, eu normalmente sou mordido por estar no modo de inserção, o que me leva a digitar "jjjjjjjjjjjjkkkkkkkkk".

Existe uma maneira de sair automaticamente do modo de inserção e voltar ao modo de comando quando a janela ST2 perde o foco?

    
por Jo Liss 04.07.2012 / 18:13

3 respostas

8

Eu nunca usei o Sublime Text 2, mas parece que ele pode ter prometido ... não mudar do meu Vim embora {Grin}

O seguinte DEVE funcionar para que você desative o modo de inserção quando perder o foco, nomeie-o como " stop_insert_on_focus_lost.py " e coloque-o em algum lugar da pasta de plugins. / p>

Espero que funcione, tenha que verificar a API e alguns de seus plug-ins de exemplo para obter o formato e os comandos. (nunca vi o ST2 antes ... recebo pontos por grokking do 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')
    
por 06.07.2012 / 03:48
4

O plugin acima é ótimo, mas sofre de um bug irritante, como mencionado nos outros comentários. Quando você mudar para algo como o menu find ou o pop-up para qualquer coisa, você estará no modo de comando / normal lá. O pior é que os comandos não funcionarão corretamente porque muitos dos comandos do modo vintage não serão executados em pop-ups, então você está em pior situação de ambos os 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!

    
por 25.03.2013 / 18:40
1

Eu também tenho isso para 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 como stop_insert_on_focus_lost.py e adicione-o em Packages .

    
por 25.03.2013 / 22:12