วิธีการตั้งค่าvi
หรือemacs
โหมดแก้ไขบรรทัดคำสั่ง Bash และวิธีการกำหนดโหมดที่ตั้งอยู่ในปัจจุบัน?
วิธีการตั้งค่าvi
หรือemacs
โหมดแก้ไขบรรทัดคำสั่ง Bash และวิธีการกำหนดโหมดที่ตั้งอยู่ในปัจจุบัน?
คำตอบ:
เนื่องจากคำถามของคุณเฉพาะเจาะจงเกี่ยวกับการทุบตี:
หากต้องการตั้งค่าอย่างถาวรสำหรับทุกเซสชันใหม่:
echo 'set -o vi' >> ~/.bashrc
หรือ (แนะนำ) เพิ่ม (หรือเปลี่ยน) บรรทัดใน ./inputrc:
set editing-mode vi
นี่จะเป็นการตั้งค่าโหมดการแก้ไขของ readline ซึ่งถูกใช้โดยโปรแกรมอื่น ๆ อีกหลายตัวนอกเหนือจาก bash
ง่ายต่อการยกเลิกการตั้งค่าตัวเลือกทั้งสอง:
shopt -ou vi emacs
หากต้องการตั้งค่าอย่างใดอย่างหนึ่ง:
set -o vi
หรือ
shopt -os vi
emacs
สำหรับเดียวกัน การตั้งค่าvi
unsets emacs
และ viceversa
ในการแสดงรายการรัฐ:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
หรือทั้งสองอย่างในครั้งเดียว:
$ shopt -op emacs vi
set +o emacs
set -o vi
วิธีทดสอบว่าvi
ตั้งค่าไว้หรือไม่:
shopt -oq vi && echo vi is set
หรือ (ไวยากรณ์ ksh):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
หรือ:
[[ -o emacs ]] && echo emacs is set
หรือเพื่อทดสอบว่าไม่มีการตั้งค่าตัวเลือก:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
ถึงset
:
set -o vi
หรือ:
set -o emacs
(การตั้งค่าหนึ่งยกเลิกการตั้งค่าอื่นคุณสามารถทำได้set -o vi +o vi
เพื่อยกเลิกการตั้งค่าทั้งสอง)
เพื่อตรวจสอบ:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
ksh
ไวยากรณ์ที่มาจาก set -o vi
เป็น POSIX set -o emacs
ไม่ได้ (ตามที่ Richard Stallman คัดค้านemacs
โหมดที่ระบุโดย POSIX) แต่พบได้บ่อยในหมู่การใช้งานเชลล์ เชลล์บางตัวรองรับโหมดแก้ไขพิเศษ [[ -o option ]]
ไม่ใช่ POSIX แต่รองรับโดย ksh, bash และ zsh [ -o option ]
โดยได้รับการสนับสนุนbash
, ksh
และyash
(ทราบว่า-o
ยังเป็นไบนารีหรือผู้ประกอบการสำหรับการ[
)
set -o | egrep -w '^emacs|vi'
จะกลับมาไม่ว่าจะเป็น emacs หรือ vi
bind -V | grep editing-mode
นอกจากนี้ยังมี
man bash
มีขนาดใหญ่ แต่คุ้มค่าการอ่านในเชิงลึก