Вопрос или проблема
Недавно я добавил следующие строки в мой файл .inputrc
:
"\e[A": history-search-backward
"\e[B": history-search-forward
Однако я заметил, что при использовании этого курсор не перемещается в конец строки. Например, если я напечатаю ls
и нажму вверх, мой терминал будет выглядеть так (где |
курсор):
ls |verylongdir
Я бы хотел, чтобы было так:
ls verylongdir|
Я считаю, что zsh ведет себя таким образом с той же командой. Есть ли способ сделать это в bash?
У меня был такой же вопрос, и мне удалось найти решение с помощью экспериментов.
Я добавил следующее в мой .inputrc
"\eOA": history-search-backward # Вверх
"\eOB": history-search-forward # Вниз
"\C-P": "\eOA\C-E" # Ctrl-P
"\C-N": "\eOB\C-E" # Ctrl-N
Это связывает две горячие клавиши с Ctrl-P и Ctrl-N. Одну для поиска в истории, другую Ctrl-E для end-of-line
.
Ответ или решение
Вопрос касается настройки оболочки bash для улучшения процесса работы с историей команд. В частности, пользователь хочет, чтобы при использовании поиска по истории с помощью клавиш стрелок вверх и вниз курсор перемещался в конец найденной строки, аналогично поведению оболочки zsh. Рассмотрим решение этой задачи в контексте настройки файла .inputrc
.
Теория
Файл .inputrc
играет ключевую роль в настройке поведения readline — библиотеки, которая используется bash для обработки ввода. Этот файл позволяет настраивать клавиатурные сочетания для определённых действий. В данном случае, пользователь настроил следующие команды:
"\e[A": history-search-backward
"\e[B": history-search-forward
Эти команды связывают клавиши стрелок вверх и вниз с командами history-search-backward
и history-search-forward
, соответственно. Это позволяет осуществлять поиск команд в истории, начинающихся с уже введённого текста. Однако, по умолчанию, курсор не перемещается в конец найденной строки, что и вызывает неудобства.
Пример
Пользователь предоставил пример того, как он решил эту задачу с помощью дополнительных настроек:
"\eOA": history-search-backward # Стрелка вверх
"\eOB": history-search-forward # Стрелка вниз
"\C-P": "\eOA\C-E" # Ctrl-P
"\C-N": "\eOB\C-E" # Ctrl-N
Здесь происходит не только вызов поиска по истории, но и добавляется команда \C-E
, которая соответствует действию end-of-line
и переносит курсор в конец строки. Это достигается путём созданияи последовательности команд, сначала выполняется поиск в истории, а затем переход на конец строки.
Применение
Внедрение этих изменений в ваш рабочий процесс позволяет значительно повысить удобство и скорость работы с длинными командами в терминале. Настройки в .inputrc
создают более интуитивно понятное взаимодействие, похожее на zsh, как того требует изначальное условия.
Шаги настройки:
-
Открытие файла
.inputrc
: В домашнем каталоге создайте или откройте файл.inputrc
. Если файл отсутствует, его нужно создать. -
Добавление новых команд: Вставьте в файл следующие строки, чтобы переназначить действия для клавиш Ctrl+P и Ctrl+N:
"\eOA": history-search-backward "\eOB": history-search-forward "\C-P": "\eOA\C-E" "\C-N": "\eOB\C-E"
-
Перезапуск терминальной сессии: Изменения вступят в силу после открытия нового экземпляра терминала или перезагрузки текущей сессии через команду
source ~/.inputrc
.
Важно отметить, что данные настройки могут повлиять на привычное поведение некоторых клавиш. Например, сочетания Ctrl+P и Ctrl+N обычно связаны с перемещением по истории без поиска. Если вы часто используете эти сочетания, учтите это при адаптации приведенного решения.
Особенности и дополнительные возможности
Настройка .inputrc
позволяет создавать уникальные пользовательские конфигурации, которые подстраиваются под индивидуальные предпочтения. Помните, что подобные изменения могут изменять стандартное поведение оболочки, поэтому рекомендуется сначала протестировать новую конфигурацию в различных сценариях использования.
Кроме того, для достижения максимального удобства работы с оболочкой bash есть смысл изучить и другие возможности readline
, такие как создание макросов, или комбинирование различных команд для автоматизации часто выполняемых действий.
Заключение
Применение детально разработанных изменений в .inputrc
позволяет значительно облегчить жизнь пользователям, активно работающим в командной строке. Эти изменения позволяют быстрее находить и запускать команды из истории, одновременно сосредотачиваясь на конечных участках строк ввода, что сокращает количество необходимых нажатий клавиш. Настройка bash под индивидуальные потребности не только экономит время, но и улучшает общую эффективность рабочего процесса.