Иногда Vim начинает игнорировать сопоставления на клавишах Ctrl

#vim #ssh #terminal #tmux

Вопрос:

В последнее время при использовании Vim в tmux по ssh иногда случается так, что Vim начинает игнорировать все мои сопоставления, которые начинаются с Ctrl: например <C-P> , которые я привязал к плагину CTRL. Вместо этого Vim выполняет встроенное действие (в этом случае перемещение строк в файле вверх). Я не сомневаюсь, что правильное нажатие клавиши достигает Vim, так как оно использует правильное встроенное действие, связанное с <C-P> (использование :send-keys для отправки ctrl-p из tmux также приводит к запуску встроенного <C-P> в vim, а не отображения).

Все мои сопоставления, не включающие клавишу управления, все еще работают. Например, я могу сделать это:

nnoremap p :echo "test"<cr> , и настойчивые p отголоски test

Но затем сразу nnoremap <c-p> :echo "test"<cr> же после, и нажатие CTRL-P не вызывает эхо-теста, оно перемещает курсор вверх на одну строку.

Перезапуск Vim всегда устраняет проблему, но в какой-то момент что-то, что я делаю, снова вызывает проблему. Я работаю в основном в tmux через SSH в последнее время, так что я не 100% уверен, что если один из них-это проблема (хотя я думаю, что я помню, это происходит один раз в Vim в tmux не через SSH), но как уже говорилось выше, я считаю, передаче ключей напрямую из tmux в качестве теста сделать Vim является получение фактического ctrl-p кода. Кроме того, <C-V><C-P> в режиме вставки действительно выполняется вставка ^P .

Обратите внимание, что, хотя я использовал ctrl-p здесь в качестве примера, поскольку это ключ, который я на самом деле часто использую на практике, это относится к любому сопоставлению управляющих ключей.

Есть ли какое-то состояние Vim, о котором я не знаю, из-за которого это происходит? Вероятно, это смертельная проблема? Каковы мои следующие шаги?

Комментарии:

1. Ваша запись немного непоследовательна. Ты настаиваешь Control p или Control Shift p ? Кроме того, если вы уверены , что Vim получает ^P , то проблема в другом. В любом случае, этот вопрос не имеет ничего общего с программированием, поэтому его следует перенести в более подходящее место, например, в систему отслеживания проблем Tmux или суперпользователя. Просто убедитесь, что вы попробуете еще кое-что со своей стороны: работает ли это так, как ожидалось, с локальным Vim? с локальным Vim через локальный tmux? с удаленным Vim через SSH? с удаленным Vim через SSH через локальный tmux? с удаленным Vim через удаленный tmux через SSH?

2. Что делает: :verbose map <c-p> делает? Также вы должны быть уверены, что echo amp;cpoptions этого не произойдет < .