อัปเกรด Bash ให้ล้ำสมัยด้วย Flyline เครื่องมือเสริมประสิทธิภาพที่สร้างด้วย Rust

· By: AttapolK

ผู้ใช้ Linux ส่วนใหญ่ได้รับประโยชน์จาก GNU Readline โดยไม่รู้ตัว เพราะมันคือไลบรารีที่จัดการการแก้ไขบรรทัดคำสั่งแบบโต้ตอบใน Bash พร้อมคุณสมบัติคุ้นมืออย่างการเลื่อนเคอร์เซอร์ ประวัติคำสั่ง และการเติมคำพื้นฐานด้วยปุ่ม Tab

แม้ว่า Readline is highly configurable จะสามารถตั้งค่าได้หลากหลาย แต่การเติมคำมาตรฐานยังถือว่าค่อนข้างเรียบง่ายเกินไปสำหรับการใช้งานในปัจจุบัน

ผมได้พบกับเครื่องมือใหม่ชื่อว่า Flyline ซึ่งยกระดับการเติมคำสั่งของ Bash ไปอีกขั้นโดยไม่ต้องตั้งค่าให้ยุ่งยาก สำหรับใครที่ต้องการควบคุมเชลล์ของตัวเองได้อย่างเต็มประสิทธิภาพ Flyline อาจกลายเป็นเครื่องมือที่ต้องมีติดเทอร์มินัลไว้

Flyline ใช้แนวทางที่แตกต่างออกไปโดยการเข้ามาแทนที่ Readline โดยตรง ตัวเครื่องมือถูกสร้างขึ้นด้วย Rust และ ratatui เพื่อเรนเดอร์อินเทอร์เฟซเทอร์มินัลที่สวยงามและตอบสนองได้ดีกว่าเดิม

สำรวจฟีเจอร์ของ Flyline

ความแตกต่างจะปรากฏให้เห็นทันทีที่เริ่มใช้งาน การแนะนำคำสั่งจะเด้งขึ้นมาขณะพิมพ์ ช่วยให้การทำงานในเทอร์มินัลรวดเร็วและลื่นไหลขึ้นอย่างเห็นได้ชัด

การแนะนำอัตโนมัติสไตล์ IntelliSense

Flyline จะแสดงป๊อปอัพการเติมคำถัดจากเคอร์เซอร์ทันทีที่คุณเริ่มพิมพ์ ช่วยให้คุณเห็นข้อเสนอแนะได้โดยไม่ต้องละสายตาจากจุดที่กำลังทำงาน

Flyline IntelliSense Suggestion

คุณสามารถใช้ปุ่ม Tab หรือลูกศรขึ้น-ลง เพื่อเลือกคำสั่งที่ต้องการได้แบบเรียลไทม์ นอกจากนี้ยังมีสโครบาร์สำหรับรายการที่ยาวเป็นพิเศษ ซึ่งรองรับการเลื่อนดูด้วยเมาส์ได้อีกด้วย เมื่อได้คำสั่งที่ต้องการแล้วเพียงกด Enter เพื่อใส่ลงในบรรทัดคำสั่งทันที

การค้นหาแบบ Fuzzy และการเติมเส้นทาง

การเติมคำสั่งแบบเดิมมักต้องการความถูกต้องของลำดับตัวอักษร เช่น การพิมพ์ pamc จะไม่เจอ pacman แต่ Flyline แก้ไขปัญหานี้ด้วยระบบ Fuzzy Search ที่รองรับการพิมพ์ผิดเล็กน้อยหรือการจับคู่บางส่วน

Fuzzy Search

ฟีเจอร์นี้ยังใช้ได้ดีกับการเติมเส้นทางไฟล์และไดเรกทอรี ช่วยให้การเข้าถึงโฟลเดอร์ลึกๆ ทำได้ง่ายขึ้นโดยไม่ต้องกังวลเรื่องการพิมพ์ผิดเพียงตัวเดียวที่มักจะทำให้ต้องเริ่มพิมพ์ใหม่ทั้งหมด

การสังเคราะห์การเติมคำอัตโนมัติ (ตัวช่วยชีวิต)

สำหรับเครื่องมือ CLI ที่ไม่มีสคริปต์การเติมคำมาให้ Flyline สามารถสร้างขึ้นมาได้เองโดยการวิเคราะห์จากเอาต์พุต --help หรือหน้า man page

ตัวอย่างเช่นเมื่อผมใช้งาน ffmpeg ที่ไม่มีสคริปต์เติมคำในระบบ:

ffmpeg --<Tab>

Flyline จะถามเพื่อขอยืนยันการสร้างสคริปต์เติมคำให้โดยอัตโนมัติ ช่วยประหยัดเวลาในการเปิดคู่มือหาอาร์กิวเมนต์ที่ซับซ้อนไปได้มาก

Synthesize Suggestions

ปรับแต่งเคอร์เซอร์ (เพื่อความสวยงาม)

Flyline นำแอนิเมชันเคอร์เซอร์คล้ายกับ Kitty terminal emulator มาให้ใช้งานในเทอร์มินัลทั่วไปได้ เพื่อเพิ่มสีสันให้การทำงาน

หากต้องการดูการตั้งค่าเคอร์เซอร์ ให้รันคำสั่ง:

flyline set-cursor --help

ตัวอย่างการตั้งค่าหางเคอร์เซอร์แบบเคลื่อนไหว:

flyline set-cursor \
--backend flyline \
--style "#33ccff" \
--interpolate 1.5 \
--interpolate-easing out-elastic \
--effect fade \
--effect-easing in-out-sine \
--effect-speed 2.0

Cursor Trail Emulation

ประวัติเชลล์ที่ขัดเกลาแล้ว

Flyline ปรับโฉมหน้าต่างค้นหาประวัติคำสั่งใหม่ให้สวยงามและอ่านง่ายขึ้น โดยรองรับการค้นหาแบบ fuzzy เช่นเดียวกัน

Refined History

ฟีเจอร์ที่น่าสนใจคือ Canceled Commands (กด Alt+R) ซึ่งจะจัดเก็บคำสั่งที่คุณเคยกด Ctrl+C ทิ้งไปโดยไม่ได้รัน ช่วยให้เรียกกลับมาใช้ใหม่ได้ง่าย โดยรายการนี้จะแยกออกจากประวัติปกติและจะถูกล้างเมื่อปิดเซสชันเทอร์มินัล

Cancelled Commands

การทำงานร่วมกับเอเจนท์ AI

คุณสามารถเชื่อมต่อ Flyline เข้ากับ AI เพื่อเปลี่ยนภาษาธรรมชาติให้เป็นคำสั่ง Bash ได้ เพียงกำหนดค่าและพิมพ์พรอมต์ที่ต้องการ

ตัวอย่างเช่น:

ai: list files older than three days

เมื่อกด Alt+Enter ระบบจะส่งข้อมูลไปให้ AI สร้างคำสั่งพร้อมเน้นไวยากรณ์มาให้คุณตัดสินใจก่อนรันจริง

การปรับแต่งพรอมต์

Flyline รองรับการสร้างพรอมต์ (Prompt) ที่ซับซ้อน ทั้งวิดเจ็ตไดนามิก แอนิเมชัน และการแสดงเวลาสด คุณสามารถคัดลอกตัวอย่างการตั้งค่านี้ไปใส่ใน ~/.bashrc เพื่อเริ่มใช้งานได้ทันที:

# 1. Create the animation widgets
flyline create-prompt-widget animation \
--name "SPINNER" \
--fps 12 \
'\e[38;2;137;180;250m⠋\e[0m' \
'\e[38;2;137;180;250m⠙\e[0m' \
'\e[38;2;137;180;250m⠹\e[0m' \
'\e[38;2;137;180;250m⠸\e[0m' \
'\e[38;2;137;180;250m⠼\e[0m' \
'\e[38;2;137;180;250m⠴\e[0m' \
'\e[38;2;137;180;250m⠦\e[0m' \
'\e[38;2;137;180;250m⠧\e[0m' \
'\e[38;2;137;180;250m⠇\e[0m' \
'\e[38;2;137;180;250m⠏\e[0m'
flyline create-prompt-widget animation \
--name "PULSE" \
--fps 6 \
--ping-pong \
'\e[38;2;166;227;161m●\e[0m' \
'\e[38;2;116;199;236m●\e[0m' \
'\e[38;2;203;166;247m●\e[0m'
# 2. Set prompt variables
PS1='\e[1;32m\u@\h\e[0m:\e[1;34m\w\e[0m\nSPINNER PULSE \e[1;35m❯\e[0m '
PS1_FILL='─'
RPS1='\e[38;2;249;226;175m\t\e[0m'
PS2='\e[2mFLYLINE_PROMPT_LINE_NUMBER ›\e[0m '
# 3. Set transient history cleanup
PS1_FINAL='\e[38;2;166;227;161m✔\e[0m \e[1;34m\w\e[0m \e[1;30m❯\e[0m '
RPS1_FINAL=''
PS1_FILL_FINAL=''
# 4. Enable cursor trail & motion
flyline set-cursor \
--backend flyline \
--style "#cba6f7" \
--interpolate 1.5 \
--interpolate-easing out-elastic \
--effect fade \
--effect-easing in-out-sine \
--effect-speed 2.0

Custom animated Prompt

ติดตั้ง Flyline

รันสคริปต์ติดตั้งอย่างเป็นทางการผ่านเทอร์มินัล:

curl -sSfL https://github.com/HalFrgrd/flyline/releases/latest/download/install.sh | sh

ตัวติดตั้งจะจัดการตั้งค่าใน ~/.bashrc ให้โดยอัตโนมัติ และขอแนะนำให้ลองใช้บทเรียนสอนใช้งานเบื้องต้นด้วยคำสั่ง:

flyline run-tutorial

ทางเลือกสำหรับผู้ใช้ ZSH

Flyline ออกแบบมาเพื่อ Bash โดยเฉพาะ แต่หากคุณใช้ ZSH อยู่แล้ว คุณสามารถใช้ปลั๊กอินอย่าง zsh-syntax-highlighting และ zsh-autosuggestions เพื่อรับประสบการณ์ที่ใกล้เคียงกันได้

ZSH Autosuggestion, Syntax Highlighting and Auto Complete

บทสรุป

Flyline เป็นตัวแทนเครื่องมือยุคใหม่ที่สร้างด้วย Rust เพื่อแก้ข้อจำกัดของเครื่องมือ GNU แบบดั้งเดิม โดยมอบความสะดวกสบายทั้งการเติมคำอัจฉริยะและการช่วยเหลือจาก AI โดยที่คุณไม่ต้องเปลี่ยนเชลล์หลักไปใช้ตัวอื่น

ลองนำ Flyline ไปใช้งานดูครับ นี่คือโปรเจกต์ที่มีอนาคตและน่าจับตามองว่าการพัฒนาในภายภาคหน้าจะเป็นอย่างไรต่อไป

Source: It's FOSS
ดูแลงานแปลและเรียบเรียงโดย AttapolK

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก
  • SystemD_Solutions

    เยี่ยมครับ!