Le -w {scriptout} Tous les caractères que vous tapez sont enregistrés dans le fichier
"ScriptOut", jusqu'à ce que vous quittiez Vim.
Ceci est utile si vous voulez créer
Un fichier de script à utiliser avec "vim -s"
ou ": source!". Quand le "scriptout"
Le fichier existe déjà, de nouveaux personnages
sont annexés. Voir également
| Répéter complexe |. {scriptout} ne peut pas
commencer par un chiffre. {Pas dans VI} P>
-w {scriptout} comme -w, mais ne pas ajouter, écrasez un fichier existant.
{Pas dans VI} P>
blockQuote>
Mais quand je le fais, le fichier {scriptout} commencera toujours par une séquence hexadécimale comme J'utilise gvimportable.exe 7.3 de PortaBeApps.com. Avec le commutateur Quel est ce "numéro magique"? Sous Windows avec GVIM.EXE, je ne peux pas rejouer mon scriptout avant d'avoir supprimé ces trois premiers octets ... P>
Il semble que cette fonctionnalité, qui pourrait être très utile, est mal documentée. P>
Merci pour vos réponses. P> -w code> et -w code> Options de VIM a théoriquement l'effet suivant: p>
80 fd 60 code> (parfois c'est 80 fd 62 code>). p>
-U non code>, il fait de même. P>
3 Réponses :
Ma meilleure hypothèse est que ceci est un bogue dans le code d'interface graphique de GVIM. P>
Utilisation de gvim 7.3, si j'exécute J'ai également testé Vim 7.2 à partir de la coque de Linux, la version de Vim incluse dans Snow Leopard (7.2) et les versions GUI et Terminal de Macvim 7.2 (avec gvim -u non -w scriptout code> puis je vois le problème, mais si j'exécute vim -u non -w scriptout code> Les octets indésirables ne sont pas présents. P>
MVIM -W code> et et / Applications / Macvim / Contenu / MacOS / Vim -W Code>, respectivement) et ils fonctionnaient tous correctement. P>
Merci pour votre réponse. Je suis probablement tenu de regarder le code pour trouver pourquoi cela le fait. Pourriez-vous essayer cela sous Linux aussi?
@Benoit Yup, fonctionne bien sur Linux, et à la fois du terminal et de l'interface graphique sur OS X. J'ai édité ma réponse pour le montrer.
(cette réponse est probablement fragmentée de manière significative, il m'a fallu un moment jouant - je voulais trouver une solution aussi parce qu'elle me intriguait - pas seulement la prime de 200: p. Il montre plus ou moins mon train de réflexion et expérimentation.)
Je peux maintenant le reproduire avec DROPVER dans le code: strong> (inutile dans ce cas, mais amusez-vous à faire et apprendre à faire) p> J'ai examiné le code source et je peux maintenant l'expliquer quelque peu (mais pas utilement!); Il reçoit le fichier Quoi qu'il en soit, je suppose que la clé est quelque part dans Il vaut également la peine de noter que si vous quittez automatiquement, En outre, si vous ouvrez GVIM, puis fermez-le à l'aide de la touche X EM>, appuyez sur NO TOUCHES: P> xxx pré> Si vous ouvrez GVIM, cliquez à l'écart, cliquez sur Retour et utilisez-l'utiliser donc je pense que je pense Ce sont les événements de la fenêtre sont traduits en interne dans quelque chose d'autre. J'ai trouvé une autre façon de déclencher gvim code> sur Linux, qui est /usr/bin/vim.gnome -g code>; en cours d'exécution comme vim -g code> fait exactement la même chose. P>
outfile code> ( src / globals.h: 1004 code>) définir ( src / main.h: 2275 code>); Ceci est ensuite écrit dans src / getchar.h: 1501 code>, dans la méthode mises à jour code> utilisé par gotchars code> (ligne 1215) qui est utilisé par vgetorpeek code>, qui est utilisé par vgetc code> et vpeekc code> ... (non, je ne sais pas où cela va!) Celles-ci sont utilisées dans un certain nombre d'endroits. P> src / gui.c code>, mais je ne sais pas d'où vient le moment! Il est également possible que certaines séquences clés soient "envoyées" (physiquement ou virtuellement, je ne sais pas), mais voyant que la question est la même dans toutes les plateformes, cela semblerait plus susceptible d'être une émission VIM que sinon. P >
gvim -u non -w scriptout -c Quitter code> (: Quitt code> après chargement) ou gvim -u non -w script -c Quitter code> (instant : Quitter code>, Ne montre jamais interface graphique), le fichier script est laissé vide. p> : q code>: p> 80 fd 62 code> est la séquence ouverte et 80 fd 63 80 fd 62 code> est la séquence proche. p> 80fd code> aussi, ce qui me conduit à chose que c'est une sorte d'un "utilisateur a accès à la fenêtre"; Par défaut avec GNOME à Ubuntu, Ctrl + ALT + S KBD> fait quelque chose avec la fenêtre (je ne me souviens pas de ce qu'on appelle; glisse tout dans la barre de titre, l'application à l'intérieur perd le contrôle du clavier, etc.) . gvim ... code> (vous connaissez les arguments!), i kbd> Ctrl + alt + s kbd> (contracté) ctrl + alt + s kbd> (développé) > kbd> ESC kbd> z kbd> q kbd> produit ceci pour ME: P> 0000000: 80fd 6269 3c80 fd63 80fd 623e 1b5a 51 ..bi<..c..b>.ZQ
Notez que ce test a été entièrement effectué sur Linux une fois que j'ai découvert que la question se manifestait là-bas ainsi que sur Windows. Si vous voulez, je peux jouer avec elle de manière similaire sur Windows, ou vous pouvez. Je pense que vous trouverez à peu près la même chose: faire des choses avec la fenêtre elle-même met les choses dans le scriptout.
Quelqu'un a fait le travail acharné pour nous dans le projet de Vimgolf, en particulier ce fichier bien commenté: https://github.com/igrigorik/vimgolf/blob/master/lib/vimgolf/lib/vimgolf/keylog.rb
0x80 code> dans la séquence d'échappement pour des codes spéciaux de deux octets. Dans ce cas, ils représentent des événements de concentration GVIM. Voir ici : < / p>
Lorsque j'ai testé l'option
-w code>, VIM n'a pas ajouté de caractères supplémentaires au début du fichier. Vous devriez essayer à nouveau sans votre.vimrc code> à l'aide devim -u aucun -wonefile code>C'est ce que j'ai fait ... toujours,
vim -u non -w scriptout code>, zq etxxd code> my_script montrera80fd 605a 51 code> (.. " )J'ai regardé cela il y a quelques semaines et je ne pouvais pas le reproduire sur Linux ... Maintenant que je sais que vous utilisez mon GVIM portable (YAY!) Je vais essayer à nouveau sur Windows et voir si je peux le comprendre . (Demain, pas aujourd'hui.)
Attendez, je a fait i> la reproduisez avec Linux avec
gvim code> ... IT fait i> sortie 80fd 60 avec-w code> ou-w code>, juste pas avecvim code>.