Відповіді:
Ви можете натиснути Ctrl- Alt-, eщоб виконати функцію читання ліній, shell-expand-line
яка буде виконувати псевдоніми, історію та розширення слів. Зауважте, що на деяких клавіатурах Metaнемає Alt. Вам може знадобитися натиснути Escпотім Ctrl-e
Функції alias-expand-line
і history-and-alias-expand-line
не пов'язані за замовчуванням, але ви можете пов'язати їх, додаючи рядки , схожі на такі рядки в ваш ~/.inputrc
файл.
"\e\C-l": alias-expand-line
що змусить Ctrl- Alt- l(нижній регістр "ell") виконувати лише псевдонім розширення.
"\C-i": "\e\C-l\e\e"
який створює макрос , який виконує як alias-expand-line
і complete
. Це залежить від прив'язки з моєї відповіді вище, і те, що прив'язка Esc-Esc за замовчуванням залишається в силі. Ви все одно зможете виконати Esc-Esc, якби хотіли виконати за замовчуванням.
ESC C-e
працює на Bash, але C-x a
працює на Zsh. Тестували також на OS X.
Control-x: history-and-alias-expand-line
.
Це насправді може бути набагато простішим способом зробити те, що ви намагаєтесь ( bash
версія> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
«S man
сторінка: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
оболонка буде інтерпретувати 'll' як команду / функцію 'll', яка, ймовірно, не існує.
Це не працює. Але я здогадуюсь / сподіваюся, що щось подібне можна зробити, щоб зробити те, що ви хочете зробити. Вам доведеться використовувати власний сценарій завершення. Ось як ви робите:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
Тепер джерело повного файлу bash_completion ( http://caliban.org/bash ) та вкажіть вищезгаданий скрипт у файл у каталозі bash_completion.d, щоб той сценарій, який ви отримали із посилань на URL. Повідомте мене, якщо це не працює.
Дякую.
Для людей, які встановили zsh і шукають просте рішення, глобалії можуть стати вашим другом
Розширює всі глобальні вирази, підкоманди та псевдоніми (включаючи глобальні).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
для встановлення просто додайте "globalias" до вас .zshrc список плагінів
plugins=(... globalias)
Потім просто натисніть,
SPACE
щоб запустити розширення написаної вами команди.Якщо ви хочете вставити пробіл лише без розширення командного рядка, натисніть
CTRL+SPACE