Как сделать автозаполнение терминала на основе ранее введенных команд?
При использовании терминалов нормально, что нажатие вверх и вниз циклически повторяет предыдущие команды, введенные в хронологическом порядке.
На сайте я узнал, как добавить к этому поведение, автоматически заполняя то, что я печатаю на курсоре, на основе ранее введенных команд при нажатии вверх и вниз.
Например, допустим, я набрал следующие команды в следующем порядке:
ls Videos
ls Vids
lsomething
ls Videos/Funny/Old
vi file
ls Music
Если я ничего не набрал, нажатие вверх и вниз будет циклически проходить по всем строкам, как обычно. Но если я набрал ls
, нажатие вверх и вниз циклически перебирает все команды, где первые 2 символа ls
(строки 1,2,3,4,6 выше). входящий ls
(с пробелом после), тем не менее, будет только циклы вверх и вниз по строкам 1,2,4,6. Так же, ls Vid
позволяет стрелкам циклически проходить через строки 1,2,4, но ls Videos
просто позволяет ездить на велосипеде между строками 1 и 4.
Довольно полезно заполнять значения, характерные для команд, которые вам нужно вводить снова и снова, без необходимости циклически перебирать каждую несвязанную команду, которую вы вводили между ними. Например, я пытаюсь проверить влияние env
значения, такие как локаль, на вещи:
env [many different values] [command]
[insert many different commands here]
env [slightly different values from before] [command]
[doing other stuff]
Мне нужно только нажать несколько раз после ввода env
циклически переключаться между значениями, которые я пробовал.
Я прошу прощения, если это немного долгий путь, чтобы описать это. Я не знаю, как это называется. Мои терминалы имели такое поведение, но они, кажется, потеряли его, и я не могу найти сайт, с которого я узнал. Я думаю, что это связано с редактированием ~/.bashrc
,
1 ответ
Чтобы получить поведение, которое вы после, добавьте эти строки в свой ~/.inputrc
(создайте файл, если он не существует):
"\e[A": history-search-backward
"\e[B": history-search-forward
Затем откройте новый терминал, и он будет работать как положено. Это поведение контролируется настройками в /etc/inputrc
а также ~/.inputrc
, Вы можете прочитать больше о них в Readline Command Names
раздел man bash
:
non-incremental-forward-search-history (M-n)
Search forward through the history using a non-incremental
search for a string supplied by the user.
history-search-forward
Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.