(Questa risposta è probabilmente frammentata in modo significativo, mi ci è voluto un po 'di tempo a giocare - volevo trovare una soluzione anche perché mi incuriosiva - non solo la taglia di 200: P. Più o meno mostra il mio pensiero e sperimentazione.)
Posso ora riprodurlo con gvim
su Linux, che è /usr/bin/vim.gnome -g
; correndo come vim -g
fa lo stesso.
Scavando nel codice: (inutile in questo caso, ma divertente da fare e di imparare come fare)
Ho guardato attraverso il codice sorgente e ora posso spiegarlo un po ' (ma non utilmente!); ottiene il set outfile
FILE (src/globals.h:1004
) (src/main.h:2275
); questo viene quindi scritto in src/getchar.h:1501
, nel metodo updatescript
utilizzato da gotchars
(riga 1215) utilizzato da vgetorpeek
, utilizzato da vgetc
e vpeekc
... (no, non so dove sta andando!) poi questi sono usati in un numero di posti.
In ogni caso, suppongo che la chiave sia da qualche parte nello src/gui.c
, ma non so dove sia al momento! È anche possibile che alcune sequenze di tasti vengano "inviate" (fisicamente o virtualmente, non lo so), ma dal momento che il problema è lo stesso su tutte le piattaforme, sembra che sia più probabile che si tratti di un problema di Vim.
situazioni interessanti portando ad una probabile spiegazione:
E 'anche la pena notare che se si esce automaticamente, gvim -u NONE -w scriptout -c quit
(:quit
dopo il caricamento) o gvim -u NONE -w scriptout -c quit
(instant :quit
, non mostra mai GUI), il il file scriptout è lasciato vuoto.
Inoltre, se si gvim aperta e poi vicino utilizzando il tasto X, premere nessun tasto:
0000000: 80fd 6280 fd63 80fd 62 ..b..c..b
Se si apre gvim, click di distanza, scegliere Indietro e utilizzare :q
:
0000000: 80fd 6280 fd63 80fd 6280 fd2c 80fd 2e3a ..b..c..b..,...:
0000010: 710d q.
Quindi penso che gli eventi della finestra siano tradotti internamente in qualcos'altro. 80 fd 62
è la sequenza aperta e 80 fd 63 80 fd 62
è la sequenza chiusa.
Ho trovato un altro modo di attivare lo 80fd
, il che mi porta alla cosa è una sorta di "utente ha accesso alla finestra"; di default con GNOME in Ubuntu, Ctrl + Alt + S fa qualcosa con la finestra (non ricorda come si chiama, fa scorrere tutto nella barra del titolo, l'app all'interno perde il controllo della tastiera ecc.). gvim ...
(si sa gli argomenti!), i<Ctrl + Alt + S (contratta) Ctrl + Alt + S (espanso) >EscZ Q produce questo per me:
0000000: 80fd 6269 3c80 fd63 80fd 623e 1b5a 51 ..bi<..c..b>.ZQ
Sommario: quindi non abbiamo quello che credo sia la soluzione; gVim cattura i messaggi della finestra in qualche modo e - se dovrebbe o non dovrebbe - li mette nel suo scriptout
. Se pensi che non dovrebbe (o vorresti sapere il motivo per cui sono stati lasciati o se sono nemmeno destinati a esserlo o se dovresti averne a cuore), chiedi sulla lista di Vim, credo.
Quando ho eseguito il test utilizzando l'opzione '-W', vim non ha aggiunto caratteri aggiuntivi all'inizio del file. Dovresti riprovare senza il tuo '.vimrc' usando' vim -u NONE -W somefile' –
Questo è quello che ho fatto ... ancora, 'vim -u NONE -W scriptout', ZQ e' xxd' my_scriptout mostrerà '80fd 605a 51 '(..'ZQ) – Benoit
Ho guardato questo un paio di settimane fa e non sono riuscito a riprodurlo su Linux ... ora che so che stai usando il mio gVim Portable (yay!) Proverò di nuovo su Windows e vedere se riesco a capirlo. (Domani, non oggi.) –