Cấu hình autocomplete cho Nushell

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.

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:

unwanted nu-complete ssh-host

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.