Vim et versions
Le gros problème avec vous la question, c'est que cette question dépend de la vim version. Par vim version je ne parle pas de la version (7.3...), mais beaucoup plus si vous utilisez MacVim, gVim, le terminal de l'édition, etc.
La version est importante, parce que le t_vb param (type :set t_vb?
pour l'obtenir) est différente pour les différentes versions de vim, mais je écrire à ce sujet plus tard.
J'utilise Ubuntu. Dans mon terminal, je ne suis même pas en mesure de produire ces visuels clignote (probablement Ubuntu juste les ignore, au moins, c'est ce qui s'est vraiment passé à la normale bell: Ce programme, les sons de la cloche!). gVim est différent, le visual bell est d'y travailler.
Le même se passe avec Emacs. Le visual bell (haut et bas de lignes, comme vous l'avez décrit) fonctionne parfaitement bien dans la version de X. Le terminal version est juste calme.
t_vb paramètres
Comme certains l'ont soupçonné, le t_vb param est responsable de l'aspect visuel de bell dans vim. Mais il est différent dans le terminal:
t_vb=^[[?5h$<100/>^[[?5l
et gVim:
t_vb=^[|f
Donc, je pense que ce serait différent pour MacVim, trop.
En passant: Si vous modifiez la cloche, vous pouvez générer le ^[ V + . Ne copiez pas les chaînes ci-dessus, ils ne fonctionneront pas.
t_vb est rien d'autre qu'une chaîne de caractères, qui est envoyé à la borne (ou gvim). Vous pouvez également définir t_vb=abcd, qui serait sortie de abcd au curseur. Mais pas permanent. C'est juste l'affichage de la magie, les éclairs se produisent en raison de caractères d'échappement.
Il n'y a aucun moyen de communiquer avec vim. Vous pouvez toutefois modifier l'ensemble de vim (affichage à supprimer des lignes, ajouter des lignes, etc). Mais si l'écran est redessiné, tout aura disparu.
Le principal problème avec cette tâche, c'est que les séquences d'échappement de ne pas avoir un sommeil de séquence. Vous pourriez essayer d'insérer une ligne avec la couleur blanche et l'enlever, mais c'est juste moyen à rapide (j'ai essayé).
Le comportement décrit est seulement le cas pour gVim. Mais je pense que le reste va probablement se comporter de manière très simlar. Toutefois, si votre terminal / pseudo terminal prend en charge une séquence d'échappement, qui ne met en évidence qu'un certain nombre de lignes, vous pouvez être en mesure de faire ce que vous voulez.
Je risque de vous décevoir, mais je ne pense pas qu'il y est un moyen d'obtenir le comportement que vous voulez, sans modifier la source vim (ou de la modification d'un logiciel de terminal, qui, je n'hésiterais pas à recommander).
Modification du code source d'origine
Si vous souhaitez modifier le comportement de l'visual bell comme vous le souhaitez, vous pouvez toujours modifier le C fichiers. Je ne le recommande pas, mais ce n'est certainement pas impossible. Vous pourriez commencer ici:
http://code.google.com/p/vim/source/browse/src/misc1.c#3433
Supprimer "out_str(T_VB);" et d'y insérer quelque chose comme ceci (pseudo-code):
invert(fist_line)
invert(last_line)
sleep(100 ms)
invert(fist_line)
invert(last_line)
Le sommeil pourrait être gênant. Mais c'est juste la façon la plus simple (Pas de minuteries, etc.). Le problème serait de trouver une telle fonction d'inversion. Je vais essayer de chercher une commande qui exécute vim-script et ensuite essayer de trouver un correspondant de commandes de vim. Je parie que ce serait possible.