Улучшена функция автозаполнения терминала (по аналогии с Matlab)

18

Если кто-то из вас когда-либо использовал Matlab, вы могли заметить функциональность командного окна в этой программе. Интересно, возможно ли включить такую ​​же функциональность в Mac Terminal?

Это работает так: предположим, что вы ранее использовали две команды в этом сеансе терминала. Сначала вы использовали, cd ~а затем ls -la.

В каждом терминале * nix, включая Mac, если вы нажмете на него Up Arrow, он сначала покажет ls -laкоманду и, если вы нажмете дважды, cd ~команду. Это круто. Но в Matlab, если вы сначала напечатаете букву, cа затем нажмете Up Arrow, она не покажет вас ls, а перейдет непосредственно к cd ~. Это экономит много времени, когда у вас большие команды и длинный список ранее использованных команд.

Является ли это возможным?

perr0
источник

Ответы:

27

В оболочке Bash вы можете нажать Control+, Rчтобы выполнить обратный интеллектуальный поиск в истории. Начните вводить команду, и оболочка автоматически завершит работу с ранее введенными командами.

Затем вы можете либо нажать, Enterчтобы выполнить команду еще раз, либо использовать клавишу со стрелкой влево или вправо для редактирования команды, или нажать и удерживать Control+, Rчтобы просмотреть другие возможные завершения.

Обратный интеллектуальный поиск

Gerry
источник
9

Сохраните это как ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Вариант-вверх был бы \e\e[Aи контроль-р \C-p. Вы можете увидеть escape-последовательности других комбинаций клавиш, нажав control-v.

LRI
источник
1
Для пользователей, у которых его еще нет ~/.inputrc, просто создайте его.
Sibbs Gambling
Должен быть принят ответ
ripper234
1
"\ e [A": команда не найдена
Луи
2

Другая вещь, которую вы можете сделать, это набрать, !а затем первую букву, и она найдет самую последнюю. IE: cd ~можно получить доступ с!c

Марк Робинсон
источник
1

Это особенность оболочки. Control-R будет делать то, что вы описываете, но переход на более современную оболочку даст вам гораздо больше. Взгляните на Z-shell (zsh), там есть немного кривой обучения, но она очень мощная.

Ɱark Ƭ
источник
Я думаю, что вы имеете в виду Control-R.
JMK
1

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

Крис
источник
0

Добавьте их в свой .cshrc (если вы используете tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Затем выполните source ~ / .cshrc, чтобы получить именно ту функциональность, которую вы описываете.

Я не знаю, есть ли .profile эквивалент.

возможно
источник