Vim - Командная строка - сопоставление предыдущей и следующей командных клавиш - PullRequest
3 голосов
/ 22 февраля 2020

При открытии командной строки и нажатии клавиш со стрелками вверх или вниз отображаются команды, набранные в последний раз. Есть ли способ отобразить это поведение? Например, когда я нажимаю ctrl p, я хочу, чтобы vim показывал мне мою предыдущую команду (заставить vim действовать так, как будто я нажал стрелку вверх). То же самое для ctrl n для следующей команды.

Как я могу это сделать?

1 Ответ

2 голосов
/ 22 февраля 2020

Клавиши CTRL-P и CTRL-N уже делают то, что вы хотите, они ищут вашу историю команд. См. :help c_CTRL-P, в котором объясняется, как он «вызовет более старую командную строку из истории».

Способ работы CTRL-P и CTRL-N немного отличается от стрелок вверх и вниз в том смысле, что стрелки будут go только в тех элементах истории, которые начинаются с введенных вами символов. Так что :e, пробел, стрелка вверх будет go последней командой, которую вы использовали для открытия файла для редактирования. Подробнее см. :help c_<Up>.

Вы можете переназначить их так, чтобы они делали то же, что и их коллега, с помощью команды cnoremap, которая создает сопоставления для нажатий клавиш, набранных в то время как в Командная строка Vim.

Например, чтобы CTRL-P и CTRL-N вели себя так же, как стрелки (полностью с префиксом), вы можете использовать следующие команды для создания (несколько наивного) отображения :

cnoremap <C-P> <Up>
cnoremap <C-N> <Down>

Недостатком этого подхода является то, что CTRL-P и CTRL-N ведут себя по-разному в wildmenu, поэтому более полное отображение будет:

cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"

Это сохранит исходное поведение CTRL-P и CTRL-N в wildmenu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...