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

10

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

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

Standardmäßig habe ich also die folgende PuTTY-Konfiguration:

PuTTY Tastaturkonfiguration

Mit ESC[n~Mapping

Das Problem beim Mapping ( map <F1> :tab help<CR>und auch nmapund imap) F1in Vim besteht nun darin, dass es den Effekt von ~(Groß- / Kleinschreibung umschalten) ergibt . 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 in Midnight Commander jedoch einwandfrei.

Zusätzlich zu meinen Problemen mit der obigen Einstellung gibt es eine seltsame Sache F1: Ich habe auch F5( set pastetoggle=<F5>) in Vim "zugeordnet" . Merkwürdigerweise , dass Werke einen Reiz mögen, 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) von einwandfrei!

Mit "Linux" Mapping

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

Was fehlt mir hier? Wie kann ich ein einheitliches Verhalten erzielen, 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 auf TERM=xtermaußerhalb der tmuxSitzung und TERM=screenvon einem Fenster oder Fenster aus eingestellt.

Ich benutze nicht:

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

um den Terminaltyp im Inneren zu überschreiben tmux.

0xC0000022L
quelle

Antworten:

8

Das Problem ist das TERM=xtermÄußere tmux. Es gibt keine Konfiguration von PuTTY, die mit der xtermTerminalbeschreibung übereinstimmt, und die Nichtübereinstimmung wird in screenoder tmux(treffen Sie Ihre Wahl) eingespeist.

Siehe zum Beispiel in den häufig gestellten Fragen zu ncurses. Warum nicht einfach TERM verwenden, das auf "xterm" eingestellt ist? . Die Empfehlung dort ist natürlich zu setzen

TERM=putty

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

Thomas Dickey
quelle
Vielen Dank. Eigentlich konnte ich tackweder mit apt-file searchnoch nach der Installation des von Ihnen empfohlenen Pakets etwas finden. Aber toe -a|grep -i puttybestätigt , dass mehrere PuTTY Terminal Definitionen existieren (einschließlich a putty-256color). Ich werde es ausprobieren und mich bei Ihnen melden und auch entsprechend akzeptieren.
0xC0000022L
Ich hatte nicht bemerkt, dass Tack nicht in Ubuntu 14.04 war (es ist schon eine Weile in Debian, wurde aber wahrscheinlich übersehen, als ich es aus dem ncurses-Quell-Tarball aufteilte). Wenn ich meinen Computer überprüfe, sieht es so aus, als hätte ich eines meiner Pakete ausgeführt.
Thomas Dickey