2 คะแนน โดย GN⁺ 2025-02-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Fish เป็นเชลล์บรรทัดคำสั่งที่ใช้งานเป็นมิตรสำหรับ macOS, Linux และระบบปฏิบัติการตระกูล Unix อื่น ๆ
  • ตั้งแต่ 4.0.0 เป็นต้นไป โค้ดแกนหลักของ Fish ถูก พอร์ตจาก C++ ไปเป็น Rust
    • สิ่งนี้ทำให้เกิดการเปลี่ยนแปลงครั้งใหญ่ในด้าน dependency และวิธีการบิลด์ แต่ไม่มีผลกระทบโดยตรงต่อผู้ใช้
  • การเปลี่ยนแปลงที่ไม่เข้ากันย้อนหลัง:
    • เพิ่มรูปแบบการเขียนคีย์ใหม่สำหรับคำสั่ง bind
    • ตอนนี้ ctrl-c จะเรียก clear-commandline และพฤติกรรมเดิมยังใช้งานได้ผ่าน cancel-commandline
    • ผลลัพธ์ของฟังก์ชัน random ตามค่า seed อาจแตกต่างจากเวอร์ชันก่อนหน้า
    • ตัวแปรที่อยู่ในตำแหน่งคำสั่งจะไม่สามารถขยายเป็นคีย์เวิร์ดของ subcommand ได้อีกต่อไป
    • ตอนนี้ functions --handlers จะแสดงรายการ handler ตามลำดับที่ถูกกำหนดไว้
    • ฟีเจอร์ qmark-noglob ถูกเปิดใช้งานเป็นค่าเริ่มต้น

การปรับปรุงและการแก้ไข

  • โปรโตคอลคีย์บอร์ด: รองรับ modifyOtherKeys ของ XTerm และโปรโตคอลคีย์บอร์ดของ kitty
  • ไบนารีติดตั้งได้ในตัว: สามารถบิลด์ fish เป็นไบนารีที่ติดตั้งได้ด้วยตัวเอง
  • ประวัติคำสั่ง: ใช้ฟังก์ชัน fish_should_add_to_history เพื่อตัดสินใจว่าคำสั่งใดควรถูกเพิ่มลงใน history
  • ฟีเจอร์ย้อนกลับ: history จะยังคงอยู่แม้หลังจากรันคำสั่งแล้ว
  • การจำกัดตัวย่อ: สามารถขยายตัวย่อได้เฉพาะกับบางคำสั่งเท่านั้น

ฟีเจอร์ที่ไม่แนะนำและถูกถอดออก

  • commandline --tokenize ถูกแทนที่ด้วย commandline --tokens-expanded
  • การระบุชื่อคีย์ผ่านไวยากรณ์ bind -k ไม่ได้รับการแนะนำอีกต่อไป
  • โหมดวางถูกถอดออกแล้ว

การปรับปรุงด้านสคริปต์

  • คำสั่ง history ใหม่: สามารถใช้ history append เพื่อเพิ่มคำสั่งลงใน history โดยไม่ต้องรันคำสั่ง
  • การ redirect แบบใหม่: `

1 ความคิดเห็น

 
GN⁺ 2025-02-28
ความเห็นจาก Hacker News
  • สิ่งที่น่าสนใจที่สุดของ Fish 4.0 คือ ตอนนี้เขียนด้วย Rust แล้ว
    • อยากทดสอบดูว่ามีความแตกต่างที่สังเกตได้ชัดหรือไม่
  • มีการบอกว่าไม่น่าจะส่งผลกระทบโดยตรงต่อผู้ใช้
    • มีการเขียนแกนหลักของ Fish ใหม่ แต่แทบทุกอย่างยังทำงานเหมือนเดิม
  • สงสัยว่าข้อเสียที่ใหญ่ที่สุดสำหรับคนที่เปลี่ยนมาใช้ Fish shell คืออะไร
    • คือพอคุ้นเคยกับมันบนเครื่องตัวเองแล้ว เวลาต้องไปใช้ Bash หรือ Zsh บนระบบเซิร์ฟเวอร์ของบริษัท
    • ถ้าจะเปลี่ยนจาก Bash ไป Fish ก็อาจคุ้มที่จะพิจารณาเปลี่ยนไป Nushell ด้วย
  • ในฐานะผู้ใช้ Zsh อยากลองใช้ Fish ดู
    • กำลังเพิ่มปลั๊กอินให้ Zsh เพื่อให้ทำงานคล้าย Fish
  • ถ้าใช้ Homebrew อยู่ ตอนนี้ยังไม่มี Fish ให้ใช้งาน
    • มีแผนจะเพิ่มเข้ามา
  • ใช้ Fish มาหลายปีแล้ว แต่เหตุผลหลักคือระบบเติมคำสั่งอัตโนมัติที่ยอดเยี่ยม
    • ระบบธีม/พรอมป์ต์ที่เรียบง่ายขึ้นและการจัดการปลั๊กอินของ oh-my-fish ก็ดีเช่นกัน แต่เป็นเรื่องรอง
  • ฟีเจอร์อื่น ๆ ของ Fish ที่ไม่เข้ากันกับ Bash นั้นค่อนข้างน่าหงุดหงิด
    • โดยเฉพาะการจัดการตัวแปรสภาพแวดล้อม
    • ในเชิงหลักการมันออกแบบได้ดีกว่า Bash แต่ไม่ได้ต่างกันมาก และเพราะไม่ได้ใช้บ่อยจึงต้องกลับไปเรียนรู้ใหม่ทุกครั้ง
    • เวลา copy-paste คำแนะนำการตั้งค่าจากเอกสารจะไม่สะดวก
  • สงสัยว่ามีการปรับกระบวนการพัฒนาอย่างไรสำหรับการย้ายไป Rust
    • เห็นมีแค่ PR เดียว (#9512)
  • สงสัยว่าหลังเขียนใหม่ด้วย Rust แล้วไบนารีมีขนาดใหญ่ขึ้นแค่ไหน
  • clear-commandline เป็นฟีเจอร์ที่น่าสนใจ
    • มีความยากในการรักษาความสม่ำเสมอระหว่าง Windows กับ macOS
    • ใช้งาน Karabiner ได้ไม่ค่อยดี
    • กำลังจะไปดูค่าตั้งต้นของ cancel-commandline