2 điểm bởi GN⁺ 2025-02-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Fish là một shell dòng lệnh thân thiện với người dùng dành cho macOS, Linux và các hệ điều hành họ Unix khác
  • Từ 4.0.0, mã lõi của Fish đã được chuyển từ C++ sang Rust
    • Điều này mang lại những thay đổi lớn về phụ thuộc và cách build, nhưng không ảnh hưởng trực tiếp đến người dùng
  • Các thay đổi không tương thích:
    • Giới thiệu cách ký hiệu phím mới cho lệnh bind
    • ctrl-c giờ sẽ gọi clear-commandline, và hành vi trước đây có thể dùng qua cancel-commandline
    • Kết quả của hàm random theo giá trị seed có thể khác so với các phiên bản trước
    • Biến ở vị trí lệnh giờ đây không thể được mở rộng thành từ khóa lệnh con
    • functions --handlers giờ liệt kê các handler theo thứ tự được định nghĩa
    • Tính năng qmark-noglob được bật mặc định

Cải tiến và sửa lỗi

  • Giao thức bàn phím: hỗ trợ modifyOtherKeys của XTerm và giao thức bàn phím của kitty
  • Binary tự cài đặt: có thể build fish thành binary tự cài đặt
  • Lịch sử lệnh: có thể quyết định lệnh nào được thêm vào lịch sử bằng hàm fish_should_add_to_history
  • Tính năng hoàn tác: lịch sử vẫn được giữ lại ngay cả sau khi thực thi lệnh
  • Giới hạn viết tắt: chỉ mở rộng viết tắt cho các lệnh cụ thể

Tính năng bị phản đối sử dụng và bị loại bỏ

  • commandline --tokenize được thay thế bằng commandline --tokens-expanded
  • Cách chỉ định tên phím qua cú pháp bind -k bị phản đối sử dụng
  • Chế độ dán đã bị loại bỏ

Cải tiến scripting

  • Lệnh lịch sử mới: có thể thêm lệnh vào lịch sử mà không cần thực thi bằng history append
  • Chuyển hướng mới: `

1 bình luận

 
GN⁺ 2025-02-28
Ý kiến trên Hacker News
  • Điểm thú vị nhất của Fish 4.0 là giờ đây nó được viết bằng Rust
    • Muốn kiểm tra xem qua thử nghiệm có khác biệt đáng замет không
  • Người ta nói sẽ không có ảnh hưởng trực tiếp tới người dùng
    • Phần lõi của Fish đã được viết lại, nhưng gần như mọi thứ vẫn hoạt động y hệt
  • Tò mò đâu là nhược điểm lớn nhất đối với những người đã chuyển sang shell Fish
    • Sau khi đã quen trên hệ thống của mình, lại phải dùng Bash hoặc Zsh trên hệ thống máy chủ của công ty
    • Nếu định chuyển từ Bash sang Fish thì cũng đáng cân nhắc chuyển sang Nushell
  • Là người dùng Zsh, tôi muốn thử Fish
    • Tôi đang thêm plugin vào Zsh để nó hoạt động giống Fish
  • Nếu dùng Homebrew thì hiện vẫn chưa có Fish
    • Sẽ được bổ sung sau
  • Tôi đã dùng Fish nhiều năm, chủ yếu vì tính năng tự động hoàn thành rất xuất sắc
    • Hệ thống theme/prompt được đơn giản hóa và quản lý plugin oh-my-fish cũng tốt, nhưng chỉ là yếu tố phụ
  • Những tính năng còn lại của Fish không tương thích với Bash thì khá bất tiện
    • Đặc biệt, việc quản lý biến môi trường là một vấn đề
    • Về nguyên tắc, thiết kế này tốt hơn Bash, nhưng khác biệt không lớn và lại ít dùng nên mỗi lần đều phải học lại
    • Bất tiện khi copy-paste hướng dẫn cấu hình từ tài liệu
  • Tò mò không biết việc điều chỉnh phát triển để migration sang Rust đã được thực hiện như thế nào
    • Có vẻ chỉ thấy một PR duy nhất (#9512)
  • Tò mò không biết sau khi viết lại bằng Rust thì binary đã tăng kích thước bao nhiêu
  • clear-commandline là một tính năng thú vị
    • Khó duy trì tính nhất quán giữa Windows và macOS
    • Không dùng Karabiner cho đúng cách được
    • Dự định sẽ kiểm tra thiết lập cancel-commandline mặc định