
나는 사용하고있다포도 수확Sublime Text 2의 모드(Vi 바인딩)
ST2로 다시 전환할 때 여전히 삽입 모드에 있기 때문에 정기적으로 물려서 "jjjjjjjjjjjjkkkkkkkk"라고 입력하게 됩니다.
ST2 창이 포커스를 잃으면 자동으로 삽입 모드를 종료하고 명령 모드로 돌아가는 방법이 있습니까?
답변1
저는 Sublime Text 2를 사용해 본 적이 없지만 가능성이 있을 것 같습니다... 그래도 Vim에서 변경하지는 않습니다. {Grin}
다음과 같은해야 한다초점을 잃었을 때 삽입 모드를 끄려면 이름을 "stop_insert_on_focus_lost.py"를 선택하고 플러그인 폴더 어딘가에 넣으세요.
작동하길 바라면서 형식과 명령을 얻기 위해 API와 예제 플러그인 중 일부를 스캔해야 했습니다. (이전에는 ST2를 본 적이 없지만... API, Python 및 빈티지 모드를 몇 분 안에 이해하면 포인트를 얻을 수 있나요?)
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')
lornix의 답변을 바탕으로 일부 엣지 케이스를 수정했습니다. 이름을 지정 stop_insert_on_focus_lost.py
하고 아래에 추가하세요 Packages
.