Jawaban:
Anda dapat menekan Ctrl- Alt- euntuk melakukan fungsi readline shell-expand-line
yang akan melakukan alias, histori dan perluasan kata. Perhatikan bahwa pada beberapa keyboard Metatidak Alt. Anda mungkin perlu menekan Esclalu Ctrl-e
Fungsi alias-expand-line
dan history-and-alias-expand-line
tidak terikat secara default, tetapi Anda dapat mengikatnya dengan menambahkan baris yang mirip dengan berikut ke ~/.inputrc
file Anda .
"\e\C-l": alias-expand-line
yang akan membuat Ctrl- Alt- l(huruf kecil "ell") hanya melakukan ekspansi alias.
"\C-i": "\e\C-l\e\e"
yang menciptakan makro yang melakukan baik alias-expand-line
dan complete
. Itu tergantung pada pengikatan dari jawaban saya di atas dan bahwa pengikatan default untuk Esc-Esc tetap ada. Anda masih dapat melakukan Esc-Esc jika Anda ingin melakukan penyelesaian default.
ESC C-e
bekerja untuk Bash, tetapi C-x a
bekerja untuk Zsh. Juga diuji pada OS X.
Control-x: history-and-alias-expand-line
.
Ini sebenarnya mungkin cara yang jauh lebih sederhana untuk melakukan apa yang Anda coba ( bash
versi> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
's man
page: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
shell akan menafsirkan 'll' sebagai perintah / fungsi 'll' yang kemungkinan tidak ada.
Ini tidak bekerja. Tapi saya menduga / berharap sesuatu seperti ini dapat dilakukan untuk melakukan apa yang ingin Anda lakukan. Anda harus menggunakan skrip penyelesaian sendiri. Inilah cara Anda membuatnya:
_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
Sekarang sumber file bash_completion lengkap ( http://caliban.org/bash ) dan letakkan skrip yang disebutkan di atas dalam file di dalam direktori bash_completion.d yang skrip yang Anda dapatkan dari referensi url. Beri tahu saya jika itu tidak berhasil.
Terima kasih.
Untuk orang-orang yang menginstal zsh mencari solusi sederhana, globalias mungkin menjadi teman Anda
Perluas semua ekspresi glob, sub-perintah, dan alias (termasuk global).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
untuk menginstal cukup tambahkan "globalias" ke daftar plugin .zshrc Anda
plugins=(... globalias)
Kemudian cukup tekan
SPACE
untuk memicu perluasan perintah yang telah Anda tulis.Jika Anda hanya ingin memasukkan spasi tanpa memperluas baris perintah, tekan
CTRL+SPACE