Bagaimana cara mendapatkan penyelesaian tab berwarna?

17

Apakah ada cara untuk mendapatkan keluaran berwarna saat menggunakan penyelesaian tab di terminal? Warna saya baik-baik saja di tempat lain, jadi saya tahu saya telah berhasil mengaktifkan terminal warna.

Menggunakan bash di Ubuntu (10.10).

Ryan
sumber
Bagaimana Anda menentukan "keluaran berwarna saat menggunakan penyelesaian tab"?
slhck

Jawaban:

21

Tidak ada fasilitas dalam Bash untuk mewarnai keluaran selama penyelesaian karena ada ikan dan zsh. Seseorang dapat menulis fungsi penyelesaian yang menghasilkan urutan kontrol warna, tetapi Anda harus mempertahankan salinan dari penyelesaian yang diusulkan dengan dan tanpa kode warna atau menghapusnya ketika pengguna membuat pilihan karena Bash menggunakan pilihan secara langsung secara normal dan kode warna akan menghalangi.

Jika ini adalah fitur penting untuk Anda, saya sarankan Anda mempertimbangkan untuk menggunakan zsh.

Memperbarui

Bash 4.3 readline menambahkan variabel yang memungkinkan warna untuk penyelesaian tab untuk menampilkan warna berbeda untuk file yang dapat dieksekusi, direktori, dll., Selama penyelesaian tab:

colored-stats

Readline di Bash 4.4 mendatang menambahkan variabel yang memungkinkan warna untuk menunjukkan bagian yang cocok dari string selama penyelesaian tab.

colored-completion-prefix

Anda dapat melihat nilai-nilai variabel ini menggunakan

bind -v | grep color

Untuk mengaturnya, tambahkan baris ke ~/.inputrcfile Anda seperti:

set colored-stats on
Dijeda sampai pemberitahuan lebih lanjut.
sumber
1
@Ryan: Zsh cukup kompatibel dengan Bash. Anda mungkin akan menemukan peralihan menjadi cukup mudah. Ini memiliki banyak fitur canggih yang tidak dimiliki Bash (atau Anda harus menggunakan utilitas eksternal untuk). Hanya ada beberapa hal yang berbeda secara mendasar. Contohnya adalah bahwa indeks array berbasis satu dan bukan berbasis nol, tetapi ada pengaturan yang memengaruhi itu. Saya hanya menggunakan zsh sesekali.
Dijeda sampai pemberitahuan lebih lanjut.
1
@AstroFloyd: Dari Bash Manua : "Definisi warna diambil dari nilai LS_COLORSvariabel lingkungan." Dokumentasi untuk variabel itu ada di sini . Tidak ada pengaturan untuk manhalaman, jadi Anda harus melihat di mana Anda LS_COLORSakan ditetapkan dan menemukan kombinasi warna yang sesuai dan mengubahnya. Di sistem saya, mannama halaman tidak akan diwarnai ketika tab selesai (dan rusak symlink, sementara merah-ke-abu-abu di lsoutput, ...
Dijeda sampai pemberitahuan lebih lanjut.
1
... berwarna biru muda seperti symlink yang valid selama penyelesaian tab).
Dijeda sampai pemberitahuan lebih lanjut.
1
@AndyCarlson: Apakah bind -v | grep colormenunjukkan keduanya set colored-completion-prefix ondan set colored-stats on? Jika demikian, apa yang terjadi ketika Anda mengetik huruf a diikuti dengan menekan tab dua kali? Jika Anda telah menambahkan pengaturan ke ~/.inputrctetapi Anda belum memulai terminal baru atau belum dijalankan re-read-init-filedengan menekan control-x control-r maka pengaturan tidak akan berlaku.
Dijeda sampai pemberitahuan lebih lanjut.
2
@AndyCarlson Apa itu output pada bash prompt ketika Anda menekan ctrl-x ctrl-v?
Dijeda sampai pemberitahuan lebih lanjut.
3

Aku tidak tahu tentang warna penyelesaian untuk opsi perintah dan argumen tapi untuk nama file dan direktori, menurut ( /unix//a/133866 ) menyatakan user495470 bahwa dalam Bash 4.3 dan kemudian Anda dapat menambahkan set colored-stats onuntuk ~/.inputrcmendapatkan berwarna selesai saat Anda melakukannya ls <tab>.

James Choi
sumber