Ipython: تغيير الإكمال التلقائي في علامة التبويب إلى ctrl-space

تم إنشاؤها على ١١ أبريل ٢٠١٧  ·  4تعليقات  ·  مصدر: ipython/ipython

أهلا،

أرغب في تغيير ارتباط المفتاح للإكمال التلقائي إلى ctrl-space. لقد قرأت عنها هنا: http://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts. لكني لست متأكدا كيف سأفعل ذلك.

التعليق الأكثر فائدة

في الأساس ، تحتاج فقط إلى إضافة هذا الرمز إلى أي ملف بدء تشغيل في ملف التعريف الخاص بك:

from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions

ip = get_ipython()
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)

يجب عليك دائمًا التحقق من أنك تقوم بتشغيل الجهاز باستخدام PTK قبل تشغيل هذا الرمز. شيء من هذا القبيل يجب أن تعمل:

def register_bindings():

    from prompt_toolkit.keys import Keys
    from prompt_toolkit.key_binding.bindings.completion import generate_completions

    bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
    bind_key(Keys.ControlSpace)(generate_completions)

ip = get_ipython()
if getattr(ip, "pt_cli"): register_bindings()
del register_bindings

ملاحظة: يمكنك وضع منطق التسجيل في كتلة if ، ولكن باستخدام أسماء توقف دالة مثل bind_key تتسرب إلى مساحة اسم الجلسة الخاصة بك. بمجرد تحديد مجموعة من الروابط والمرشحات المخصصة ، ينتهي بك الأمر إلى إنشاء الكثير من الأسماء التي قد تضطر إلى حذفها يدويًا. وضع كل ذلك في وظيفة ، ثم حذف اسم الوظيفة هو الأنظف. للحالة البسيطة أعلاه ، من المحتمل أن تكون كتلة if أفضل.

ال 4 كومينتر

في الأساس ، تحتاج فقط إلى إضافة هذا الرمز إلى أي ملف بدء تشغيل في ملف التعريف الخاص بك:

from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions

ip = get_ipython()
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)

يجب عليك دائمًا التحقق من أنك تقوم بتشغيل الجهاز باستخدام PTK قبل تشغيل هذا الرمز. شيء من هذا القبيل يجب أن تعمل:

def register_bindings():

    from prompt_toolkit.keys import Keys
    from prompt_toolkit.key_binding.bindings.completion import generate_completions

    bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
    bind_key(Keys.ControlSpace)(generate_completions)

ip = get_ipython()
if getattr(ip, "pt_cli"): register_bindings()
del register_bindings

ملاحظة: يمكنك وضع منطق التسجيل في كتلة if ، ولكن باستخدام أسماء توقف دالة مثل bind_key تتسرب إلى مساحة اسم الجلسة الخاصة بك. بمجرد تحديد مجموعة من الروابط والمرشحات المخصصة ، ينتهي بك الأمر إلى إنشاء الكثير من الأسماء التي قد تضطر إلى حذفها يدويًا. وضع كل ذلك في وظيفة ، ثم حذف اسم الوظيفة هو الأنظف. للحالة البسيطة أعلاه ، من المحتمل أن تكون كتلة if أفضل.

انها عملت! شكرا لك على العودة لي بهذه السرعة!

عندما أحاول تشغيل ما ورد أعلاه ، أحصل على AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli' . هل هذه مشكلة معروفة؟

اكتب ما يلي لتفضيلات المستخدم الخاصة بك لاختصارات لوحة المفاتيح

{
    "shortcuts":[
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-notebook",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
        }

    ]
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات