Câu hỏi Sublime Text 2 Vintage: Để chế độ chèn trên tiêu điểm bị mất


Tôi đang sử dụng Đồ cũ mode (Vi bindings) trên Sublime Text 2.

Khi chuyển trở lại ST2, tôi thường xuyên bị cắn bởi vẫn đang ở chế độ chèn, khiến tôi nhập "jjjjjjjjjjjjkkkkkkkkk".

Có cách nào để tự động rời khỏi chế độ chèn và quay lại chế độ lệnh khi cửa sổ ST2 bị mất tiêu điểm?


4
2017-07-04 16:13


gốc




Các câu trả lời:


Tôi chưa bao giờ sử dụng Sublime Text 2, nhưng có vẻ như nó có thể có lời hứa ... không thay đổi từ Vim của tôi mặc dù {Grin}

Sau đây NÊN làm việc để bạn tắt Chế độ chèn khi bạn mất tiêu điểm, đặt tên cho nó là "stop_insert_on_focus_lost.py"và đặt nó ở đâu đó trong thư mục plugins của bạn.

Hy vọng nó sẽ hoạt động, phải quét API và một số plugin mẫu của chúng để có được định dạng và lệnh. (chưa bao giờ thấy ST2 trước đây ... tôi có nhận được điểm để dò tìm API, chế độ Python và Vintage trong vài phút không?)

import sublime, sublime_plugin
import os.path

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

8
2017-07-06 01:48



Wow, điều này thực sự hiệu quả - bạn thật đáng kinh ngạc. (Tôi đã bỏ nó vào Packages/StopInsertOnFocusLost/.) Cảm ơn rất nhiều! - Jo Liss
Mừng vì tôi có thể giúp. - lornix
Tôi chỉ nhận thấy: Khi thêm plugin này, nó sẽ làm cho tìm kiếm của bạn và thay thế các trường để thay đổi sang chế độ bình thường. Vì vậy, bạn luôn phải nhấn "i" để vào chế độ chèn để chèn cụm từ tìm kiếm của bạn. Làm thế nào chúng ta có thể khắc phục điều này? - Sebastian Hoitz
Umm, Sử dụng VIM? Đọc Tài Liệu Macro Siêu Cấp? Không giống như có rất nhiều thứ ... 1 dòng mã, 4 dòng tiêu đề. COURSE nó sẽ chuyển mọi thứ ra khỏi chế độ chèn ... nó được gọi là 'stop-insert-on-focus-lost'. Có lẽ bạn có thể lưu các chế độ hiện tại của trường 'tìm kiếm & thay thế' để được khôi phục khi trả về tiêu điểm cửa sổ? Sửa lỗi dễ nhất ... không chuyển sang bất kỳ ứng dụng nào khác, do đó không mất tập trung ... yay! không có thay đổi chế độ cho các trường S & R. (Câu hỏi lý thuyết: 'Tìm kiếm và thay thế trường' là gì? Phải là một điều rất nhút nhát. {Shrug}) Hãy tận hưởng! {Grin} (Tại sao bạn lại ở chế độ chèn?) - lornix
Ví dụ: Tôi nhấn [/] để mở thanh tìm kiếm. Nhưng bây giờ tôi phải nhấn [I] trước khi tôi có thể chèn cụm từ tìm kiếm của mình. - Sebastian Hoitz


Các plugin ở trên là tuyệt vời nhưng bị một lỗi gây phiền nhiễu, như đã đề cập trong các ý kiến ​​khác. Khi bạn chuyển sang một cái gì đó giống như trình đơn tìm kiếm hoặc đi đến bất cứ điều gì popup bạn sẽ có trong lệnh / chế độ bình thường ở đó. Điều tồi tệ hơn, các lệnh sẽ không hoạt động hoàn toàn chính xác vì nhiều lệnh chế độ cổ điển sẽ không chạy trong các cửa sổ bật lên, vì vậy bạn đang ở trong tình trạng tồi tệ hơn cả về thế giới.

Phiên bản này sửa lỗi:

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')

Nhờ câu trả lời ban đầu cho mã bắt đầu!


4
2018-03-25 17:40





Tôi cũng có điều này để cung cấp:

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')

Chuyển thể từ câu trả lời của lornix - sửa một số trường hợp cạnh. Gọi tên nó stop_insert_on_focus_lost.py và thêm nó dưới Packages.


1
2018-03-25 21:12