Вы можете сделать это. Это не так элегантно или просто, как в zsh, но это возможно в bash с использованием bind
.
. Вы можете не только связывать встроенные функции Readline (перечисленные в bind -l
), но и другие макросы и функции оболочки. .
bind -m emacs -x '"\C-i":"cd .."'
свяжет команду оболочки (cd ..
) с клавишами ( Ctrl + i ) в режиме emacs (режим по умолчанию). (Ctrl + i не связан по умолчанию, а вы - нет)
Обратите внимание, что ваш запрос, вероятно, не будет отражать изменения.
Если вы пропустите -x
, вместо этого будет напечатана строка, поэтому "cd ..\n"
достигнет того же результата.
Редактировать : bind
- это то, как вы связываете ключи, и макросы могут выполнить sh то, что вы хотите, даже если встроенных элементов не существует.
Если вы закончите PS1 запрашивает \033[K
(стереть в eol) и может использовать
bind -m emacs '"\C-i":" cd ..&&echo -e \"\\033[2A\"\n"'
, чтобы сделать то, что вы хотите.
Сначала будет напечатано cd ..
, а затем символы управления, чтобы переместить курсор вверх и запустить его (с помощью *). 1029 *). Конец вашего PS1 не дает ему показываться. Это является взломом, но это показывает, что это выполнимо.