Edit - câu trả lời nhanh
Sau khi tôi trả lời, tôi tiếp tục đọc nguồn tabtab một chút và nhận thấy rằng tôi cũng có thể chạy
pkgname completion install
để cài đặt kết thúc. từ môi trường của tôi là đã bẩn, tôi không biết nếu nó thực sự đã làm bất cứ điều gì, nhưng dường như với tôi như nó đã làm ..
Còn câu trả lời
@CameronLittle đã đưa ra tài liệu tuyệt vời.
Đối với thiếu kiên nhẫn, bạn có thể bắt đầu bằng cách chạy
sudo bash -c 'pkgname completion > /etc/bash_completion.d/pkgname'
source /etc/bash_completion.d/pkgname
này sẽ thêm hoàn phiên bash hiện tại của bạn.
Theo như tôi biết, các phiên mới sẽ tự động hoàn tất.
Để làm cho quá trình liền mạch cho người sử dụng, bạn có thể sử dụng install
và postinstall
móc trong package.json
https://docs.npmjs.com/misc/scripts
Hãy chắc chắn để không in bất cứ điều gì theo mặc định. có nghĩa là chạy pkgname
sẽ dẫn đến không có đầu ra, hoặc nếu không nó sẽ không hoạt động.
quan trọng!cài đặt tabtab chỉ từ thạc sĩ
Dường tabtab có lỗi gây phiền nhiễu mà đã được giải quyết trong tổng thể nhưng không bao giờ bước vào một thông cáo ..
Các liên quan cam kết sửa chữa nó là thế này: https://github.com/mklabs/node-tabtab/commit/f8473555bf7278a300eae31cbe3377421e2eeb26
mà xử lý hoàn thành cho chuỗi bắt đầu bằng --
.
Cam kết nếu từ tháng 2 năm 2014, tuy nhiên bản phát hành mới nhất kể từ tháng 1 năm 2015 là 0,0.2 từ tháng 1 năm 2014 .. Tôi cho rằng sẽ không có nhiều bản phát hành nữa.
Vì vậy, nếu bạn muốn khắc phục sự cố này và bạn nên (!), Hãy chỉ cài đặt tabtab từ chính.
không lãng phí 2 giờ để tìm ra những gì bạn đã làm sai như tôi :)
Làm cách nào để tôi nhận được câu trả lời này? TL; DR
Trong khi câu trả lời của @ CameronLittle đưa ra giải thích đằng sau hiện trường, tôi muốn giải thích cách tôi đạt được câu trả lời.
Tôi đã thử sử dụng gói tabtab
có phần rõ ràng về cách cài đặt gói. xem https://www.npmjs.com/package/tabtab#completion-install
Tuy nhiên, điều đó dường như không hiệu quả đối với tôi.
Nhìn vào mã họ hướng dẫn thêm, tôi thấy process.argv.slice(2)[0] === 'completion'
sau đó khiến tôi chạy lệnh pkgname completion
, mà kết quả đầu ra một cái gì đó bắt đầu với
###-begin-pkgname-completion-###
### credits to npm, this file is coming directly from isaacs/npm repo
#
# Just testing for now. (trying to learn this cool stuff)
#
# npm command completion script
#
# Installation: pkgname completion >> ~/.bashrc (or ~/.zshrc)
#
những lời this file is coming directly from isaacs/npm repo
khiến tôi băn khoăn hơn. sau câu trả lời khác ở đây, tôi đã xem /etc/bash_completion.d/npm - hiển thị cùng một nội dung chính xác .. và vì vậy nhận xét.
tôi quyết định chạy
pkgname completion > /etc/bash_completion.d/pkgname
tuy nhiên đòi hỏi quyền sudo và do đó trở thành
sudo bash -c "pkgname completion > /etc/bash_completion.d/pkgname
và sau đó, để áp dụng nó vào phiên bash hiện tại tôi đã phải chạy
source /etc/bash_completion.d/pkgname
và thì đấy! nó hoạt động!
khi tôi cố gắng mở một thiết bị đầu cuối khác, nó vẫn hoạt động, vì vậy tôi cho rằng nó sẽ áp dụng cho tất cả người dùng. nếu không - bạn nên thêm nó vào .bashrc hoặc một cái gì đó ..
Đây không phải là nội dung nào đó được triển khai trong ứng dụng của bạn nhưng bên trong trình bao mà người dùng sử dụng. Xem http://askubuntu.com/questions/95211/how-do-i-set-up-bash-completion-for-command-arguments để biết cách 'bash' thực hiện điều này. – Joe
Tôi cũng vậy. Đã tìm thấy một số mô-đun 'npm' để xử lý hoàn thành nhưng tôi không thể tìm ra cách để chạy các ví dụ. – diosney
@diosney. Vì vậy, tôi đã bắt đầu làm việc trên một dự án có nó trong. Https://github.com/Jonovono/um. Tôi sẽ gửi một câu trả lời đầy đủ hơn về cách tôi cũng đạt được điều này. – Jonovono