Если кто-то из вас когда-либо использовал Matlab, вы могли заметить функциональность командного окна в этой программе. Интересно, можно ли включить те же функции в Mac Terminal.
Это работает следующим образом: предположим, вы использовали две команды ранее в этом сеансе терминала. Сначала вы использовали a, cd ~
а затем a ls -la
.
В каждом терминале * nix, включая Mac, если вы нажмете Up Arrow
, сначала отобразится ls -la
команда, а если вы нажмете ее дважды, cd ~
команда. Отлично. Но в Matlab, если вы сначала наберете букву , c
а затем нажмете Up Arrow
, она не покажет вам ls
, а вместо этого перейдет непосредственно к cd ~
. Это экономит много времени, когда у вас есть большие команды и длинный список ранее использовавшихся команд.
Является ли это возможным?
В оболочке Bash вы можете нажать Control+ R, чтобы выполнить обратный интеллектуальный поиск в истории. Начните вводить команду, и оболочка автоматически дополнит ранее введенные команды.
Затем вы можете либо нажать Enter, чтобы выполнить команду еще раз, либо использовать клавишу со стрелкой влево или вправо, чтобы отредактировать команду, либо продолжать нажимать Control+ R, чтобы просмотреть другие возможные варианты завершения.
Сохраните это как ~/.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
Опция-up будет \e\e[A
и control-p \C-p
. Вы можете увидеть управляющие последовательности других комбинаций клавиш, нажав control-v.
Еще одна вещь, которую вы можете сделать, это ввести, !
а затем первую букву, и она найдет самую последнюю. IE: cd ~
можно получить доступ с помощью!c
Это особенность оболочки. Control-R сделает то, что вы описываете, но переход на более современную оболочку даст вам гораздо больше. Взгляните на Z-shell (zsh), он требует некоторого обучения, но он очень мощный.
zsh будет выполнять команды точно так же, как в вашем примере. Вам даже не нужно ничего делать, кроме как использовать его для своей оболочки.
Добавьте их в свой .cshrc (если вы используете tcsh) --
bindkey -k up history-search-backward
bindkey -k down history-search-forward
Затем выполните source ~/.cshrc, чтобы получить именно ту функциональность, которую вы описываете.
Я не знаю, есть ли эквивалент .profile.
Сиббс Азартные игры
~/.inputrc
, просто создайте его.Луи