Funktionstasten in PuTTY für Vim und Midnight Commander unter tmux konfigurieren?

12680
0xC0000022L

Zunächst einmal ist mir bewusst, dass ich Alt+ 1(durch 9 und 0) verwenden kann, um die entsprechenden Funktionstasten ( F1durch F10) in Midnight Commander zu synthetisieren . Es hat mir schon viele Male geholfen, aber standardmäßig drücke ich die eigentlichen Funktionstasten immer noch intuitiv.

Gist: Ich versuche sowohl Vim als auch Midnight Commander in einer tmuxSitzung (manchmal Fenster, manchmal Fenster) mit PuTTY auszuführen.

Also habe ich standardmäßig die folgende Konfiguration von PuTTY:

PuTTY keyboard config

Mit ESC[n~Mapping

Das Problem beim Mapping ( map <F1> :tab help<CR>und auch nmapund imap) F1in Vim ist, dass es den Effekt von ~(Toggle Case) gibt. Und in der Tat, wenn ich drücke F1durch F5in der Schale, die Tilde ( ~) ist das Ergebnis, zusammen mit einer Glocke. Mit dieser Einstellung funktionieren die Funktionstasten im Midnight Commander jedoch einwandfrei.

Es gibt eine seltsame Sache über der obigen Einstellung zusätzlich zu meinen Problemen mit F1: Ich habe auch "gemappt" F5( set pastetoggle=<F5>) in Vim. Merkwürdigerweise, die wie ein Zauber funktioniert, auch wenn der F5Schlüssel auf der Schale eine gibt ~wie F1usw.

Hinweis: Wenn Sie Vim außerhalb von ausführen tmux, F1funktioniert die Standardbindung (und meine Überschreibung) einwandfrei!

Mit "Linux" -Mapping

Also habe ich natürlich versucht, im obigen Dialog die Einstellung "Linux" zu verwenden. Wenn ich also drücke, wechselt F1Vim am Ende der Zeile in den Einfügemodus (Wirkung von A). Der Midnight Commander erkennt bei dieser Einstellung keine der Funktionstasten. Sicher genug auf der Schale F1gibt mir Aeine Glocke ( F2a Bund so weiter).

Was fehlt mir hier? Wie kann ich ein einheitliches Verhalten erreichen, bei dem sowohl Midnight Commander als auch Vim die Funktionstasten erkennen?


Zusätzliche Information:

Remote-System ist Ubuntu 14.04 mit LANG=en_US.UTF-8.

TERMwird TERM=xtermaußerhalb der tmuxSitzung und TERM=screenbei Anzeige innerhalb eines Bereichs oder Fensters festgelegt.

Ich benutze nicht:

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

um den Terminaltyp zu überschreiben tmux.

9

1 Antwort auf die Frage

5
Thomas Dickey

Das Problem ist das TERM=xtermÄußere tmux. Es gibt keine Konfiguration von PuTTY, die mit der xtermBeschreibung des Terminals übereinstimmt, und die Nichtübereinstimmung wird in screenoder übernommen tmux.

Siehe zum Beispiel in den ncurses-FAQs. Warum nicht einfach TERM auf "xterm" setzen? . Die Empfehlung dort ist natürlich zu setzen

TERM=putty 

Eine schnelle Überprüfung tackzeigt, dass diese Kombination ( TERM=putty, tmux) für Ubuntu 14.04 funktioniert (Sie sollten das ncurses-termPaket installiert haben, das dieses enthält).

Vielen Dank. Eigentlich konnte ich "tack" nicht finden, weder bei der Suche nach "apt-file" noch nach der Installation des von Ihnen empfohlenen Pakets. "Toe -a | grep -i putty" bestätigt jedoch, dass mehrere Definitionen von PuTTY-Terminals vorhanden sind (einschließlich einer "putty-256color"). Ich probiere es aus und melde mich bei Ihnen und akzeptiere auch entsprechend. 0xC0000022L vor 8 Jahren 0
Ich hatte nicht bemerkt, dass Tack nicht in Ubuntu 14.04 war (es war eine Zeitlang in Debian, wurde aber wahrscheinlich übersehen, als ich es aus dem ncurses-Quell-Tarball herausspalte). Bei der Überprüfung meines Computers sieht es so aus, als würde ich eines meiner Pakete ausführen. Thomas Dickey vor 8 Jahren 0