Bạn đã thích thú với Nushell, đã cài vào nhưng không thấy tính năng auto-complete? Đừng vội buồn. Đó là vì các file cài đặt Nushell hiện tại không kèm sẵn các script auto-complete. Bạn sẽ phải làm thêm tí việc tay chân để cài các script này vào.
Mặc dù yêu thích Nushell, mình phải thừa nhận rằng mức độ hỗ trợ auto-complete của Nushell chưa dồi dào bằng Fish. Nushell được thiết kế để nhận dữ liệu auto-complete từ cả các script chuyên dụng viết bằng Nu và từ cả phần mềm khác.
1. Nguồn từ phần mềm khác
Từ trong Nushell, gõ:
> config nu
Bạn sẽ thấy file config.nu được mở. Nếu bạn muốn mở file bằng phần mềm khác, giả sử Helix, thì gõ:
> hx $nu.config-path
Làm theo bài này để cấu hình.
2. Nguồn từ các script Nu chuyên dụng
Bạn cần clone repo https://github.com/nushell/nu_scripts ra:
> git clone https://github.com/nushell/nu_scripts
Giả sử thư mục đó được đặt ở ~/nu_script.
Trong repo này có các file trong custom-completions là script cung cấp auto-complete cho một lệnh nào đó. Bạn muốn bật auto-complete cho lệnh nào thì cấu hình cho Nu nạp file ấy lên.
Mở file config.nu theo cách đã nói bên trên.
Thêm vào các dòng tương tự như sau:
use ~/nu_scripts/custom-completions/ssh/ssh-completions.nu *
Nếu bạn không muốn download nguyên một repo mà chỉ muốn copy một vài file chọn lọc, bạn có thể làm như sau:
Kiểm tra thư mục ~/.local/share/nushell/completions đã tồn tại hay chưa, nếu chưa thì hãy tạo:
> mkdir ($nu.data-dir | path join 'completions')
Ghi chú: Thư mục ~/.local/share/nushell
là một trong những thư mục chuẩn của Nu nên nó có biến đại diện $nu.data-dir
.
Hãy chép các file bạn chọn vào thư mục này. Sau đó, trong file config.nu, nạp các file ấy bằng lệnh ngắn hơn như sau:
> use docker-completions.nu *
Bạn không cần dùng đường dẫn đầy đủ nếu file được đặt trong ~/.local/share/nushell/completions.
Gõ exec nu
để các cấu hình mới có hiệu lực.
Tại sao dùng câu lệnh use ... *
?
Bạn có thể dùng câu lệnh source ...
tương tư các shell khác. Tôi khuyên dùng use ... *
là để tránh những lệnh dùng nội bộ cho các script kia bị lọt vào phiên làm việc của bạn.
Để so sánh, bạn thử thay cách nạp bằng:
source ssh-completions.nu
Sau đó, gõ nu
và ấn Tab, bạn sẽ thấy:
Tức là có lệnh nu-complete ssh-host
lạ xuất hiện. Mặc dù vô hại nhưng nó làm dài danh sách auto-complete.
Trong hai nguồn thì tôi thích nguồn từ script Nu hơn, bởi vì nếu lấy từ phần mềm ngoài nghĩa là mỗi lần Nu cần lấy danh sách auto-complete, nó phải chạy một chương trình lên, thời gian đó sẽ tốn hơn là nó tự xử lý lấy.