Di tmux 2.0, Anda cukup menambahkan 2 baris ini di .tmux.conf
Anda :
bind -n End send-key C-e
bind -n Home send-key C-a
Tampaknya masalah utamanya adalah dengan menggunakan xterm-256color untuk $TERM. Saya mengganti $TERM ke screen-256color dan masalahnya hilang.
Jika Anda ingin tetap menggunakan xterm-256color di tmux karena alasan tertentu - gunakan solusi arch dengan inputrc. Saya mengujinya di tmux dengan rxvt, ruby irb, python, lua dan tombol home/end ok. Mungkin setiap aplikasi readline akan baik-baik saja.
Dari arch wiki:
Hal pertama yang pertama:
jangan menyetel $TERM secara manual - biarkan terminal yang melakukannya.
Banyak aplikasi baris perintah menggunakan pustaka Readline untuk membaca masukan. Jadi, mengonfigurasi Readline dengan benar dapat memperbaiki Home dan End dalam banyak kasus.
file default /etc/inputrc tidak menyertakan pemetaan untuk kunci home/end.
Untuk memeriksa urutan escape yang dipancarkan untuk kunci ini adalah:
1. Ctrl + V
2. Home
3. Spacebar
4. Ctrl + V
5. End
ini mungkin akan mencetak:$ ^[[1~ ^[[4~
. Jadi, Anda harus menambahkan pemetaan untuk urutan ini ke inputrc Anda (/etc/inputrc menjadi global, atau hanya untuk pengguna Anda ~/.inputrc):
"\e[1~": beginning-of-line
"\e[4~": end-of-line
Tambahkan yang berikut ke .tmux.conf
Anda :
bind-key -n Home send Escape "OH"
bind-key -n End send Escape "OF"
Dan selesai!
Penjelasan
Setelah mencoba masing-masing dari ini, dan beberapa lainnya yang saya lihat sambil membaca dengan teliti jawaban dan dokumentasi lain, ini akhirnya berhasil untuk saya dalam setiap skenario yang saya lemparkan. Saya tidak dapat menjanjikan hal yang sama untuk Anda, karena skenario setiap orang berbeda, tetapi inilah yang akhirnya saya dapatkan.
Ini ditemukan setelah memperkenalkan percobaan/kesalahan dan logika yang sama dari artikel yang agak relevan yang tidak lagi tersedia. Kuncinya adalah di mana terjemahan terjadi; dalam kasus saya, ini terjadi dalam .tmux.conf
saya , bukan .bashrc
atau .zshrc
(terutama karena rumah/akhir saya berfungsi dengan baik di luar tmux
)
Men-debug
Anda dapat men-debug masalah ini dengan menggunakan cat -v
.
Jalankan cat -v
, lalu tekan tombol Beranda dan Selesai kunci. Keluar menggunakan Ctrl +C .
$ cat -v
Inilah tampilan output saya di dalam tmux using zsh
, zsh
, dan bash
:
tmux
➜ ~ cat -v
^[[1~^[[4~^C
zsh
➜ ~ cat -v
^[[H^[[F
pesta
bash-3.2$ cat -v
^[[H^[[F
Solusi
Bandingkan contoh di atas dengan yang diharapkan, dengan memasangkan tput
dengan cat -v
:
$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF
Kesimpulan
Karena masalah ini hanya ada di dalam tmux
, dan bukan di dalam cangkangnya sendiri, saya memilih untuk membuat perubahan pengikatan dalam konfigurasi tmux sebagai gantinya. Dengan menggunakan bind-key
dipasangkan dengan send
, kita bisa menggunakan Escape
kata kunci dipasangkan dengan urutan yang kita inginkan untuk mencapai terjemahan kita. Jadi:
bind-key -n NAME_OF_KEY send Escape SEQUENCE_GOES_HERE
Proses debug dan pemecahan ini dapat diterapkan pada masalah terjemahan penting lainnya. Tapi, jangan terlalu gila. Beberapa kunci dipetakan ke urutan pelarian tertentu karena suatu alasan. Perhatikan bagaimana bash
dan zsh
menerima ^[[H
urutan untuk Beranda bukannya ^[OH
; mungkin tidak disarankan untuk mengganti ini di .zshrc
kita kecuali kami mengalami masalah besar dengan ini di zsh
.