Клавиши 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.