Mengkonfigurasi tombol fungsi di Putty untuk Vim dan Midnight Commander di bawah tmux?

10

Pertama, saya sadar bahwa saya dapat menggunakan Alt+ 1(hingga 9 dan 0) untuk mensintesis masing-masing tombol fungsi ( F1melalui F10) di Midnight Commander. Ini telah banyak membantu saya, tetapi secara default saya masih menekan tombol fungsi yang sebenarnya secara intuitif.

Gist: Saya mencoba menjalankan Vim dan Midnight Commander di dalam sebuah tmuxsesi (terkadang window, terkadang pane), menggunakan Putty.

Jadi secara default saya memiliki konfigurasi Putty:

Konfigurasi keyboard Putty

Dengan ESC[n~pemetaan

Masalahnya sekarang ketika memetakan ( map <F1> :tab help<CR>, dan juga nmapdan imap) F1di Vim, adalah bahwa ia memberikan efek ~(toggle case). Dan memang jika saya menekan F1melalui F5shell, tilde ( ~) adalah hasilnya, bersama dengan bel. Tombol fungsi berfungsi dengan baik di Midnight Commander, menggunakan pengaturan ini.

Ada satu hal aneh tentang pengaturan di atas selain masalah saya dengan F1: Saya juga "memetakan" F5( set pastetoggle=<F5>) di Vim. Anehnya itu bekerja seperti mantra, meskipun F5kunci pada cangkang memberi ~seperti F1dll.

Catatan: saat menjalankan Vim di luar tmux, pengikatan default (dan penggantian saya) F1berfungsi dengan baik!

Dengan pemetaan "Linux"

Jadi secara alami saya mencoba menggunakan pengaturan "Linux" dalam dialog di atas. Jadi ketika saya tekan F1Vim masuk ke mode insert di akhir baris (efek dari A). Midnight Commander tidak mengenali tombol fungsi apa pun dengan pengaturan ini. Cukup yakin pada shell F1memberi saya Adan bel ( F2a Bdan sebagainya).

Apa yang kulewatkan di sini? Bagaimana saya bisa mendapatkan perilaku seragam di mana Midnight Commander dan Vim akan mengenali tombol fungsi?


Informasi tambahan:

Sistem jarak jauh adalah Ubuntu 14.04 dengan LANG=en_US.UTF-8.

TERMdiatur ke TERM=xtermluar tmuxsesi dan TERM=screenketika dilihat dari dalam panel atau jendela.

Saya tidak menggunakan:

set-option -g default-terminal "screen-256color"

untuk mengganti jenis terminal di dalamnya tmux.

0xC0000022L
sumber

Jawaban:

8

Masalahnya adalah di TERM=xtermluar tmux. Tidak ada konfigurasi Putty yang cocok dengan xtermdeskripsi terminal, dan ketidakcocokan feed ke screenatau tmux(pilihlah).

Lihat misalnya, di FAQ ncurses. Mengapa tidak hanya menggunakan TERM yang disetel ke "xterm"? . Rekomendasi ada tentu saja diatur

TERM=putty

Pemeriksaan cepat menggunakan tackmenunjukkan bahwa kombinasi ini ( TERM=putty, tmux) berfungsi untuk Ubuntu 14.04 (Anda harus menginstal ncurses-termpaket, yang termasuk ini).

Thomas Dickey
sumber
Terima kasih. Sebenarnya saya tidak dapat menemukan tacksama sekali, tidak dengan apt-file searchatau setelah instalasi paket yang Anda rekomendasikan. Tetapi toe -a|grep -i puttymenegaskan bahwa beberapa definisi terminal Putty ada (termasuk a putty-256color). Saya akan mencobanya dan kembali kepada Anda dan juga menerima sesuai.
0xC0000022L
Saya tidak memperhatikan bahwa tack tidak ada di Ubuntu 14.04 (sudah ada di Debian untuk sementara waktu, tetapi mungkin diabaikan ketika saya membaginya dari tarball ncurses source). Memeriksa mesin saya, sepertinya saya sedang menjalankan salah satu paket saya.
Thomas Dickey