2010-06-05 3 views
0

나는 다음과 같은 명령을 사용하여 새 창에 출력을 분할하는 VIM-스크립트가 명명 된 버퍼의 맨 아래로 스크롤 foo의 맨 아래로 스크롤하는 임의의 버퍼 또는 버퍼의 맨 아래 줄을 표시하도록 기본값을 유지하는 설정.빔, 어떻게

나는 vim 스크립트의 파이썬 블록 내부에서 이것을 대부분하고 있습니다. 그래서 같은 있습니다

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 

을 그리고 라인 ("foo는의 하단으로 스크롤") vim.command에 대한 넣어 뭔가를 찾을 필요가

+0

* 스크롤링 *이 중요합니까 아니면 단순히 버퍼 맨 아래로 전달되기를 원하십니까? – Johnsyweb

+0

덧붙이고있는 것들이 볼 수있는 공간을 초과 할 때 버퍼의 맨 아래에 머무르게하고 싶습니다. 보통 콘솔 창과 비슷합니다. –

답변

4

나는 보통 새로운 버퍼의 번호를 기록 (let b_tgt = bufnr('%')), 그리고 더 정확히는 윈도우 번호. 그런 다음 try-finally 블록에서 현재 윈도우 번호 (let w_orig = bufwinnr('%'))를 기록하고, 무언가 (:exe w_tgt.' wincmd w')를 수행해야하는 창으로 이동하고 (경우) :finally 절로 이동하십시오. 현재 창 (작업 시작 부분 ->:exe w_orig.' wincmd w').

이제 다른 버퍼가 열리거나 닫힌 경우 해당 개수가 변경 될 수 있으므로 매번 대상 창을 찾아야합니다. 이것은 bufwinnr(b_tgt)으로 완료됩니다.

+0

+1 매우 상세하고 잘 설명 된 답변입니다. – Johnsyweb

+0

잘되고, 새로운 vim 트릭을 배웠습니다. 고마워요! –