Как сделать автозаполнение терминала на основе ранее введенных команд? [дубликат]

На этот вопрос уже есть ответ:

Это нормально при использовании терминалов, когда нажатие вверх и вниз циклически переключает предыдущие введенные команды в хронологическом порядке.

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

Например, предположим, что я набрал следующие команды в следующем порядке:

  1. ls Videos
  2. ls Vids
  3. lsomething
  4. ls Videos / Funny / Old
  5. vi file
  6. 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 , таких как locale, на вещи:

env [many different values] [command]
[insert many different commands here]
env [slightly different values from before] [command]
[doing other stuff]

Мне нужно было бы только несколько раз нажать вверх после ввода env для переключения между значениями, которые я пробовал.

Прошу прощения, если это немного сложно описать. Я не знаю, как это называется. Раньше у моих терминалов было такое поведение, но, похоже, они его потеряли, и я не могу найти сайт, на котором узнал об этом. Я думаю, это как-то связано с редактированием ~ / .bashrc .

4
задан 25 October 2014 в 10:57

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.
3
ответ дан 17 November 2019 в 15:03

Другие вопросы по тегам:

Похожие вопросы: