2010-06-05 9 views
0

J'ai un vim script qui sépare la sortie dans une nouvelle fenêtre, en utilisant la commande suivante:Vim, comment faire défiler vers le bas d'un tampon nommé

below split +view foo 

J'ai essayé de trouver un moyen de un tampon arbitraire pour faire défiler vers le bas de foo, ou un paramètre pour garder par défaut pour afficher les lignes du bas du tampon. Je fais la plupart de ceci à l'intérieur d'un bloc python de script vim. J'ai donc quelque chose comme:

python << endpython 
import vim 
import time 
import thread 
import sys 

def myfunction(string,sleeptime,*args): 
    outpWindow = vim.current.window 
    while 1: 
     outpWindow.buffer.append("BAR") 
     #vim.command("SCROLL TO BOTTOM OF foo") 
     time.sleep(sleeptime) #sleep for a specified amount of time. 

vim.command('below split +view foo') 
thread.start_new_thread(myfunction,("Thread No:1",2)) 
endpython 

Et besoin de trouver quelque chose à mettre en pour vim.command (« SCROLL vers le bas de foo ») ligne

+0

Est-ce le * scrolling * qui est important ou voulez-vous simplement être livré au bas de la mémoire tampon? – Johnsyweb

+0

Je veux qu'il reste au bas de la mémoire tampon, car les éléments ajoutés dépassent l'espace visible. Plus ou moins comme une fenêtre de console normale. –

Répondre

4

j'enregistre habituellement le nouveau numéro de tampon (let b_tgt = bufnr('%')), et plus précisément son numéro de fenêtres. Ensuite, dans un bloc try-finally, j'enregistre le numéro de fenêtre en cours (let w_orig = bufwinnr('%')), saute à la fenêtre où je dois faire quelque chose (:exe w_tgt.' wincmd w'), fais la chose (:normal! G dans ton cas), et recule (dans la clause :finally) la fenêtre courante (au début de l'action ->:exe w_orig.' wincmd w').

Maintenant, si d'autres tampons ont été ouverts ou fermés, nous devons rechercher la fenêtre cible chaque fois que son numéro a changé. Ceci est fait avec bufwinnr(b_tgt).

+0

+1 pour une réponse très détaillée et bien expliquée. – Johnsyweb

+0

J'ai beaucoup travaillé, et j'ai appris de nouvelles astuces vim, merci! –

Questions connexes