Câu trả lời:
Bạn có thể nhấn Ctrl- Alt- eđể thực hiện chức năng đọc shell-expand-line
sẽ mở rộng bí danh, lịch sử và từ. Lưu ý rằng trên một số bàn phím Metalà không Alt. Bạn có thể cần nhấn Escsau đó Ctrl-e
Các chức năng alias-expand-line
và history-and-alias-expand-line
không bị ràng buộc theo mặc định, nhưng bạn có thể liên kết chúng bằng cách thêm các dòng tương tự như sau vào ~/.inputrc
tệp của bạn .
"\e\C-l": alias-expand-line
mà sẽ làm Ctrl- Alt- l(chữ thường "ell") chỉ thực hiện mở rộng bí danh.
"\C-i": "\e\C-l\e\e"
tạo một macro thực hiện cả hai alias-expand-line
và complete
. Nó phụ thuộc vào ràng buộc từ câu trả lời của tôi ở trên và ràng buộc mặc định cho Esc-Esc vẫn được giữ nguyên. Bạn vẫn có thể thực hiện Esc-Esc nếu bạn muốn hoàn thành mặc định.
ESC C-e
làm việc cho Bash, nhưng C-x a
làm việc cho Zsh. Cũng đã thử nghiệm trên OS X.
Control-x: history-and-alias-expand-line
.
Đây thực sự có thể là một cách đơn giản hơn nhiều để làm những gì bạn đang cố gắng ( bash
phiên bản> = 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 sẽ hiểu 'll' là lệnh / hàm 'll' có khả năng không tồn tại.
Điều này không hoạt động. Nhưng tôi đoán / hy vọng điều gì đó như thế này có thể được thực hiện để làm những gì bạn muốn làm. Bạn sẽ phải sử dụng kịch bản hoàn thành của riêng bạn. Đây là cách bạn tạo một:
_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
Bây giờ, nguồn tệp bash_completion đầy đủ ( http://caliban.org/bash ) và đặt tập lệnh được đề cập ở trên vào một tệp trong thư mục bash_completion.d mà tập lệnh bạn nhận được từ các tham chiếu url. Hãy cho tôi biết nếu nó không hoạt động.
Cảm ơn.
Đối với những người đã cài đặt zsh đang tìm kiếm một giải pháp đơn giản, globalias có thể là bạn của bạn
Mở rộng tất cả các biểu thức toàn cầu, các tiểu ban và bí danh (bao gồm toàn cầu).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
để cài đặt, chỉ cần thêm "globalias" vào danh sách plugin .zshrc của bạn
plugins=(... globalias)
Sau đó chỉ cần nhấn
SPACE
để kích hoạt mở rộng lệnh bạn đã viết.Nếu bạn chỉ muốn chèn một khoảng trắng mà không mở rộng dòng lệnh, hãy nhấn
CTRL+SPACE