(Diese Antwort ist wahrscheinlich fragmentiert, es hat eine Weile gedauert - ich wollte auch eine Lösung finden, weil sie mich faszinierte - nicht nur das Kopfgeld von 200: P. Es zeigt mehr oder weniger meinen Gedankengang und Experimentieren.)
Ich kann es jetzt mit gvim
auf Linux reproduzieren, das ist /usr/bin/vim.gnome -g
; Laufen als vim -g
tut genau das Gleiche.
in den Code Delving: (vergeblich in diesem Fall, aber Spaß zu tun und zu lernen, wie zu tun)
Ich habe durch den Quellcode geschaut und ich kann es jetzt erklären, etwas (aber nicht sinnvoll!); es wird die outfile
FILE (src/globals.h:1004
) gesetzt (src/main.h:2275
); Dies wird dann in src/getchar.h:1501
geschrieben, in der updatescript
Methode, die von gotchars
(Linie 1215) verwendet wird, die von vgetorpeek
verwendet wird, die von vgetc
und vpeekc
verwendet wird ... (Nein, ich weiß nicht, wohin das geht!) Dann sind diese an einer Reihe von Orten verwendet.
Wie dem auch sei, nehme ich den Schlüssel irgendwo in src/gui.c
ist, aber ich weiß im Moment nicht, wo! Es ist auch möglich, dass einige Tastenfolge „gesendet“ wird (physisch oder virtuell, ich weiß es nicht), sondern als Problem zu sehen, ist die gleiche auf allen Plattformen würde es wahrscheinlicher scheint ein Vim Problem, als es sonst zu sein.
Interessante Situationen was zu einer wahrscheinliche Erklärung:
Es lohnt sich auch während der Feststellung, dass, wenn Sie automatisch beendet, gvim -u NONE -w scriptout -c quit
(:quit
nach dem Laden) oder gvim -u NONE -w scriptout -c quit
(Instant :quit
, zeigt nie GUI), die Datei Skript ist leer gelassen.
Wenn Sie darüber hinaus offen gvim und dann schließen sie die X-Taste verwenden, keine Tasten drücken:
0000000: 80fd 6280 fd63 80fd 62 ..b..c..b
Wenn Sie offen gvim, wegklicken, klicken Sie zurück und verwenden :q
:
0000000: 80fd 6280 fd63 80fd 6280 fd2c 80fd 2e3a ..b..c..b..,...:
0000010: 710d q.
Also ich denke, es ist das Fenster Ereignisse werden intern in etwas anderes übersetzt. 80 fd 62
ist die offene Sequenz und 80 fd 63 80 fd 62
ist die Schließsequenz.
Ich habe eine andere Möglichkeit gefunden, 80fd
als auch zu triggern, was mich zu der Sache führt, es ist eine Art von "Benutzer hat Zugriff auf das Fenster"; standardmäßig mit GNOME in Ubuntu, Strg + Alt + S macht etwas mit dem Fenster (kann mich nicht erinnern, was es heißt, schiebt sie alle in der Titelleiste auf, App innen verliert Tastatursteuerung etc.). gvim ...
(Sie wissen schon, die Argumente!), i<Strg + Alt + S (kontrahiert) Strg + Alt + S (erweitert) >EscZ Q dies erzeugt für me:
0000000: 80fd 6269 3c80 fd63 80fd 623e 1b5a 51 ..bi<..c..b>.ZQ
Zusammenfassung: so da haben wir, was ich glaube, die Lösung ist; gVim fängt die Fenstermeldungen in irgendeiner Form ab und - ob es sollte oder nicht - setzt sie in seine scriptout
. Wenn du denkst, dass es nicht sein sollte (oder wissen möchtest, warum sie dort bleiben oder ob sie überhaupt gemeint sind oder ob du dich überhaupt darum kümmern solltest), frag nach der Vim-Liste, denke ich.
Wenn ich die '-W' Option getestet verwenden, vim zu Beginn der Datei keine zusätzlichen Zeichen nicht hinzugefügt haben. Sie sollten es erneut versuchen, ohne Ihre '.vimrc' mit' vim -u NONE-W somefile' –
Das ist, was ich getan habe ... '' vim -u NONE-W scriptout', ZQ und 'xxd' my_scriptout zeigen' 80fd 605a 51 '(..'ZQ) – Benoit
Ich habe mir das vor ein paar Wochen angeschaut und konnte es unter Linux nicht reproduzieren ... jetzt, da ich weiß, dass du mein gVim Portable verwendest (yay!), Werde ich es erneut unter Windows versuchen und sehen, ob ich es herausfinden kann. (Morgen, heute nicht.) –