--- title: Cấu hình autocomplete cho Nushell date: 2025-03-03 10:58:52.889411 UTC --- 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õ: ```nu > 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õ: ```nu > hx $nu.config-path ``` Làm theo [bài này](https://www.nushell.sh/cookbook/external_completers.html#putting-it-all-together) để 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: ```nu > 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: ```nu 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: ```nu > 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: ```nu > 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: ```nu source ssh-completions.nu ``` Sau đó, gõ `nu` và ấn *Tab*, bạn sẽ thấy: ![unwanted nu-complete ssh-host](https://quan-images.b-cdn.net/blogs/imgur/2026/8rm85Vw.png) 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.