Перемещение курсора в конец строки при использовании history-search-backward.

Вопрос или проблема

Недавно я добавил следующие строки в мой файл .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, как того требует изначальное условия.

Шаги настройки:

  1. Открытие файла .inputrc: В домашнем каталоге создайте или откройте файл .inputrc. Если файл отсутствует, его нужно создать.

  2. Добавление новых команд: Вставьте в файл следующие строки, чтобы переназначить действия для клавиш Ctrl+P и Ctrl+N:

    "\eOA": history-search-backward
    "\eOB": history-search-forward
    "\C-P": "\eOA\C-E"
    "\C-N": "\eOB\C-E"
  3. Перезапуск терминальной сессии: Изменения вступят в силу после открытия нового экземпляра терминала или перезагрузки текущей сессии через команду source ~/.inputrc.

Важно отметить, что данные настройки могут повлиять на привычное поведение некоторых клавиш. Например, сочетания Ctrl+P и Ctrl+N обычно связаны с перемещением по истории без поиска. Если вы часто используете эти сочетания, учтите это при адаптации приведенного решения.

Особенности и дополнительные возможности

Настройка .inputrc позволяет создавать уникальные пользовательские конфигурации, которые подстраиваются под индивидуальные предпочтения. Помните, что подобные изменения могут изменять стандартное поведение оболочки, поэтому рекомендуется сначала протестировать новую конфигурацию в различных сценариях использования.

Кроме того, для достижения максимального удобства работы с оболочкой bash есть смысл изучить и другие возможности readline, такие как создание макросов, или комбинирование различных команд для автоматизации часто выполняемых действий.

Заключение

Применение детально разработанных изменений в .inputrc позволяет значительно облегчить жизнь пользователям, активно работающим в командной строке. Эти изменения позволяют быстрее находить и запускать команды из истории, одновременно сосредотачиваясь на конечных участках строк ввода, что сокращает количество необходимых нажатий клавиш. Настройка bash под индивидуальные потребности не только экономит время, но и улучшает общую эффективность рабочего процесса.

Оцените материал
Добавить комментарий

Капча загружается...