1

В vim control-left и control-right - это слова, разделенные пробелами вперед и назад (т. Е. Синонимы для B и W), так же, как текстовые области web и bash .

Но при запуске screen эти клавиши перестают работать. При нажатии vim вместо этого переключается в командную строку и вводит 5C или 5D там.

Вот кодировка у меня для этих ключей:

$ cat >/dev/null    # pressing control-left, then control-right:
^[[1;5C^[[1;5D

Кстати, я попытался переназначить эти ключи в .screenrc , например так:

bindkey ^[[1;5D stuff B
bindkey ^[[1;5C stuff W

Это работает для vim, но теперь эти ключи не работают в командной строке bash (вместо этого просто выводится B или W).

Я предполагаю, что это какая-то загадка termcap , которую я никогда не понимал ... спасибо за любое просвещение!

1 ответ1

2

Есть несколько способов исправить это. Во-первых, запишите значение $ TERM до запуска экрана (вероятно, xterm), а затем, после запуска vim на экране, установите для параметра 'term' это значение. Например,

:set term=xterm

Другой способ - определить сопоставления для этих последовательностей символов:

:map <esc>[1;5D <C-Left>
:map <esc>[1;5C <C-Right>

Вы можете выполнить любое из этих решений в вашем ~/.vimrc при условии использования экрана, например:

if &term == "screen"
    map <esc>[1;5D <C-Left>
    map <esc>[1;5C <C-Right>
endif

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .