Hướng dẫn sử dụng

Gợi ý lệnh

Khi bạn gõ lệnh trong một phiên terminal thông thường, tính năng gợi ý lệnh hiển thị danh sách các mục gợi ý lấy từ định nghĩa tự động hoàn thành của chính shell bạn đang dùng. Lệnh vẫn nằm trên dòng nhập bình thường của terminal, và việc chọn một gợi ý chỉ chèn văn bản mà không chạy lệnh. Tính năng này không dùng mô hình AI.

Gợi ý lệnh có trên macOS và Linux. Trên Windows, tính năng này hiện đang bị tắt (xem phần Windows bên dưới).

Cài đặt và thao tác

Cài đặt ▸ Terminal ▸ “Gợi ý lệnh” có ba chế độ:

  • Tự động (mặc định): VelaTerm gom nội dung bạn nhập trong khoảng 25 ms rồi yêu cầu shell đưa ra gợi ý; gõ thêm không làm khoảng chờ này bắt đầu lại. Nếu bạn tiếp tục gõ trong lúc một yêu cầu đang chạy, chỉ nội dung nhập mới nhất được dùng cho yêu cầu tiếp theo, còn các kết quả đã lỗi thời bị loại bỏ. Mục khớp chính xác vẫn được giữ trong danh sách.
  • Khi nhấn Tab: gợi ý chỉ xuất hiện khi bạn nhấn Tab.
  • Tắt: không hiển thị danh sách gợi ý, và phím Tab giữ nguyên hành vi gốc của shell.

Thay đổi có hiệu lực ngay trong các terminal đang mở, và lựa chọn này được dùng chung cho mọi máy khách kết nối tới cùng một máy chủ VelaTerm.

Phím và chuột:

  • Phím Lên và Xuống chọn một mục gợi ý; Page Up và Page Down di chuyển nhanh trong các danh sách dài.
  • Tab hoặc nhấp chuột sẽ chèn mục đang chọn.
  • Enter luôn được chuyển cho shell và chạy lệnh hiện tại đúng như đã gõ, không áp dụng gợi ý nào.
  • Escape đóng danh sách.
  • Ctrl+Space yêu cầu gợi ý theo cách thủ công.
  • Khi vùng chọn không thể di chuyển thêm, phím Lên và Xuống được trả về cho shell. Vì vậy, nhấn Lên ở mục đầu tiên sẽ gọi lại lệnh trước đó từ lịch sử.

Các mục gợi ý được sắp xếp theo thứ tự: khớp chính xác, khớp tiền tố, khớp chuỗi con, sau đó là các mục khác do shell trả về. Trong nhóm khớp chính xác và nhóm khớp tiền tố, mục khớp đúng chữ hoa chữ thường đứng trước; trong mỗi nhóm, mục ngắn hơn đứng trước, còn các mục dài bằng nhau được sắp theo thứ tự bảng chữ cái.

Danh sách làm nổi bật phần của mỗi mục khớp với nội dung bạn đã gõ và hiển thị mô tả của shell nếu có; di chuột lên một mục để đọc mô tả dài. Danh sách giữ nguyên vị trí và mục đang chọn trong lúc kết quả được làm mới. Chấp nhận một gợi ý sẽ đóng danh sách, kể cả khi mục đó là thư mục kết thúc bằng /. Nhấn Tab lần nữa để xem cấp thư mục tiếp theo. Ở chế độ Tự động, danh sách sẽ mở lại khi bạn gõ tiếp.

Nếu bạn thay đổi nội dung nhập trong lúc một thao tác chèn đang chờ xử lý, VelaTerm sẽ chờ kết quả mới từ shell và chỉ chèn mục đó nếu shell vẫn còn đề xuất nó.

Các shell được hỗ trợ

ShellGợi ý
ZshCác widget tự động hoàn thành gốc và compadd; VelaTerm dùng các định nghĩa tự động hoàn thành hiện có của bạn.
Bash 4 trở lênCác hàm và đặc tả tự động hoàn thành đã đăng ký; tên lệnh và tên tệp khi chưa có gì được đăng ký.
FishCác mục gợi ý và mô tả gốc từ complete -C.
PowerShell (pwsh) có PSReadLineCơ chế gốc CommandCompletion.CompleteInput.
Bash 3.2 và các shell khácChỉ có hành vi Tab gốc; không có danh sách gợi ý.

Bash đi kèm macOS là phiên bản 3.2. Để dùng gợi ý lệnh với Bash trên macOS, hãy đặt một phiên bản Bash mới hơn (ví dụ bản cài bằng Homebrew) làm shell đăng nhập.

Gợi ý lệnh chỉ có trong các phiên terminal thông thường. Phiên tác nhân không bị thay đổi.

Cách nạp phần tích hợp

VelaTerm nạp phần tích hợp shell khi một terminal khởi động. Các tệp khởi động shell của bạn không bao giờ bị sửa đổi, và lệnh khởi động tùy chỉnh vẫn chạy sau khi phần tích hợp được nạp. Các terminal đã chạy từ trước khi bạn cài phiên bản có tính năng này cần được khởi động lại.

  • Zsh nạp phần tích hợp qua các tệp khởi động tạm thời sau các tệp đăng nhập của bạn, rồi khôi phục ZDOTDIR. Không có gì được gõ vào terminal.
  • Bash khởi động với một --rcfile tạm thời. Tệp này đọc các tệp đăng nhập của bạn theo thứ tự thông thường của Bash (/etc/profile, sau đó là tệp đầu tiên tìm thấy trong số ~/.bash_profile, ~/.bash_login và ~/.profile) rồi mới nạp phần tích hợp. Không có gì được gõ vào terminal. So với một shell đăng nhập thông thường vẫn còn hai khác biệt: shopt -q login_shell trả về false, và ~/.bash_logout không chạy khi shell thoát.
  • Fish và PowerShell không có điểm móc khởi động tương đương, nên VelaTerm gửi một lệnh để nạp phần tích hợp khi shell khởi động; dòng lệnh đó xuất hiện ở đầu terminal mới.

Chính sách thực thi (execution policy) của PowerShell vẫn áp dụng cho script tích hợp; VelaTerm không vượt qua chính sách này.

Gợi ý tạm dừng khi một lệnh đang chạy, khi một chương trình toàn màn hình đang mở, trong lúc soạn chữ bằng bộ gõ (IME) và trong lúc duyệt lịch sử (Ctrl+R, Ctrl+S và các phím mũi tên). Các phím mũi tên không bao giờ khởi động một yêu cầu tự động, nên nhấn Lên nhiều lần sẽ tiếp tục đi qua các lệnh trước đó. Khi không có phần tích hợp nào đang hoạt động hoặc không tìm thấy mục gợi ý nào, Tab giữ nguyên hành vi gốc.

Khởi động SSH hoặc một shell lồng khác bên trong terminal sẽ không cài phần tích hợp vào môi trường đó.

Windows

Trên Windows, VelaTerm không nạp phần tích hợp nào, bất kể thiết lập là gì, và thiết lập “Gợi ý lệnh” bị ẩn. Các terminal cmd, Windows PowerShell, pwsh, Git Bash và WSL giữ nguyên hành vi Tab gốc. Tính năng này vẫn tắt vì nếu nạp ở đó, VelaTerm sẽ phải gõ một lệnh vào mỗi terminal mới và mỗi yêu cầu sẽ khởi động các tiến trình phụ trợ, làm chậm việc gõ phím.

Giới hạn

  • Các mục gợi ý phụ thuộc vào định nghĩa tự động hoàn thành đã cài cho shell của bạn. VelaTerm không cung cấp danh mục lệnh riêng hay dự đoán dựa trên lịch sử.
  • Một số script tự động hoàn thành phức tạp của Bash dựa vào cơ chế nội bộ của Readline mà phần tích hợp không thể tái tạo chính xác.
  • Các hàm tự động hoàn thành có thể chạy chương trình bên ngoài và có thể chậm. Danh sách ngừng chờ sau hai giây, nhưng hàm shell vẫn đang chạy sẽ không bị buộc dừng; hãy nhấn Ctrl+C để ngắt hàm đó như thường lệ.
  • Phần tích hợp dành riêng Ctrl+F12 để thu thập mục gợi ý và Ctrl+F11 để chèn mục đã chọn. Nếu cấu hình shell gán lại các phím này sau khi terminal khởi động, gợi ý lệnh có thể ngừng hoạt động. Với Bash từ 4.0 đến 4.3, phần tích hợp còn bọc thêm một lớp xử lý quanh phím Enter và Ctrl+J.
  • Mô tả do shell cung cấp. Nhiều định nghĩa tự động hoàn thành của Bash không có mô tả, nên các mục gợi ý của chúng không hiển thị mô tả.

Kiểm thử

Tính năng này đã được kiểm thử trên macOS với Zsh và Bash 5.2, và trên Linux với Bash, Zsh, Fish và PowerShell 7.4.