Saya sudah melihat-lihat dokumentasi, dan saya harus mengatakan saya tidak dapat menemukan cara untuk mendeteksi dan menampilkan mode-vi saat ini. Saya harap Anda memiliki kejutan yang menyenangkan dan seseorang datang dengan solusi, tetapi saya jelas tidak bisa melihat cara untuk melakukan apa yang Anda minta.
Saya pikir ada cara untuk melakukan ini, tetapi itu adalah kerja keras yang sangat besar untuk gangguan kecil, dan saya tidak berpikir itu yang ada dalam pikiran Anda ketika Anda mengajukan pertanyaan ini. Jika ini benar, berhentilah membaca sekarang dan nikmati hidup Anda.
OTOH, jika ini benar-benar hewan peliharaan Anda, dan itu membuat Anda gila, dan Anda benar-benar ingin sekali memecahkan masalah ini, inilah ide saya tentang bagaimana cara mengatasinya:
- Dapatkan salinan Pemrograman Tingkat Lanjut di Lingkungan UNIX (R) oleh W. Richard Stevens.
- Baca bab tentang Streaming dan Terminal I / O.
- Unduh kode sumber ke buku yang disebutkan di atas, yang mencakup contoh aliran yang dapat berlapis ke terminal.
- Terapkan penanganan Anda untuk kombinasi tombol Esc (atau kedua mode, tekan tombol ganti), dan tunjukkan melalui bel atau manipulasi latar belakang garis saat ini.
Singkatnya, Unix mengimplementasikan terminal I / O sebagai aliran I / O dupleks penuh antara driver perangkat dan proses pengguna, ke mana modul dapat dimasukkan. Ini diatur sebagai tumpukan, sehingga Anda dapat melapis aliran sebanyak yang Anda inginkan. Jumlah aliran yang disuntikkan menciptakan perilaku I / O terminal Anda.
Ketika sebuah karakter dimasukkan, modul pertama akan memeriksanya dan meneruskannya (jika mau). Ketika respons tiba di arah yang berlawanan, itu sekali lagi mendapat kesempatan untuk memeriksa dan meneruskannya. Ini adalah cara Ctrl-C ditangani pada tingkat yang lebih tinggi ke kunci karakter normal.
Anda dapat membuat biner yang mengimplementasikan modul stream, yang ketika dijalankan dijalankan secara diam-diam di latar depan, memeriksa dan meneruskan semua penekanan tombol, melakukan tindakan yang Anda sukai pada penekanan tombol yang Anda pedulikan. Untuk semua maksud dan tujuan, itu akan tampak seolah-olah Anda sedang mengerjakan shell. Oooh. Anda dapat memanggil biner ini pada baris terakhir (atau pertama, atau apa saja) dari .tcshrc Anda dan Anda bahkan tidak akan tahu itu ada.
Ada primer yang bagus di sini , tetapi saya tidak dapat menemukan banyak tentang topik ini, mungkin karena sudah melewati masa jayanya.