Как связать Shift-Left / Right в IPython, чтобы вызвать выбор - PullRequest
0 голосов
/ 20 сентября 2019

Я бы хотел использовать стрелки Shift-Left / Right для выбора блоков текста (для копирования / вырезания) в приглашении IPython вместо стандартного стиля выбора Emacs / vi.Я также скорее не должен достигать к моей мыши.Это частично объясняется тем фактом, что выделение с помощью Ctrl-Space (в стиле Emacs), по-видимому, не работает, когда IPython запускается в окне терминала VS-кода (если вы можете решить это, это будет шагом).Но я также привык использовать Shift-Left / Right в Windows.Примечание. Я имею в виду оболочку на основе IPython-text;не Jupyter / notebooks.

Читая документы по IPython, я обнаружил, что могу изменить привязки клавиш, основанные на prompt_toolkit.Поэтому я попытался использовать простой пример в документе, который отображает ключ для печати глупого сообщения, и просто изменил ключ на Shift-Left (s-left):

from IPython import get_ipython
from prompt_toolkit.enums import DEFAULT_BUFFER
from prompt_toolkit.filters import HasFocus, HasSelection, ViInsertMode, EmacsInsertMode

ip = get_ipython()
insert_mode = ViInsertMode() | EmacsInsertMode()

def insert_unexpected(event):
    buf = event.current_buffer
    buf.insert_text('The Spanish Inquisition')

# Register the shortcut if IPython is using prompt_toolkit
if getattr(ip, 'pt_app', None):
    registry = ip.pt_app.key_bindings
    registry.add_binding('s-left',
                     filter=(HasFocus(DEFAULT_BUFFER) & ~HasSelection() & insert_mode))(insert_unexpected)

Однако ничего не происходит.После запуска вышеуказанного в IPython Shift-Left все еще просто перемещает курсор влево.Если я скажу «cn» (для Ctrl-N) вместо «s-left» выше, результат будет таким, как ожидалось, и сообщение будет напечатано.

Есть ли специальный прием для сопоставления ShiftЛевые / Правильные ключи?Конечно, следующим шагом будет активация режима выбора и т. Д. Может быть, кто-то определил привязки подсказок в стиле Windows?(выделение с помощью стрелок Shift, вырезание / копирование / вставка с помощью Ctrl-X / C / V).Любая помощь приветствуется.

...