มีวิธีในการขยายชื่อแทนแบบอินไลน์ในทุบตีหรือไม่?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
มีวิธีในการขยายชื่อแทนแบบอินไลน์ในทุบตีหรือไม่?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
คำตอบ:
คุณสามารถกดCtrl- Alt- eเพื่อดำเนินการฟังก์ชั่น readline 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 กำลังมองหาวิธีแก้ปัญหาอย่างง่ายglobaliasอาจเป็นเพื่อนของคุณ
ขยายนิพจน์คำสั่งย่อยและชื่อแทนทั้งหมด (รวมถึงโกลบอล)
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
เพื่อติดตั้งเพียงเพิ่ม "globalias" ให้กับคุณรายการปลั๊กอิน. zshrc
plugins=(... globalias)
จากนั้นกด
SPACE
เพื่อเริ่มการขยายคำสั่งที่คุณเขียนหากคุณต้องการแทรกช่องว่างโดยไม่ต้องขยายบรรทัดคำสั่งให้กด
CTRL+SPACE