Vim, как прокрутить до конца именованного буфера - PullRequest
0 голосов
/ 06 июня 2010

У меня есть vim-скрипт, который разбивает вывод в новое окно, используя следующую команду:

below split +view foo

Я пытался найти способ из произвольного буфера прокрутить до нижней части foo или параметр, чтобы по умолчанию он показывал нижние строки буфера.

Я делаю большую часть этого внутри python-блока скрипта 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

И нужно найти что-то, что можно вставить для vim.command («ПРОКРУТКА ДО НИЖЕ foo») строка

1 Ответ

4 голосов
/ 06 июня 2010

Я обычно записываю новый номер буфера (let b_tgt = bufnr('%')), а точнее его номер окна. Затем в блоке try-finally я записываю номер текущего окна (let w_orig = bufwinnr('%')), перехожу к окну, где мне нужно что-то сделать (:exe w_tgt.' wincmd w'), делаю это (:normal! G в вашем случае) и прыгаю вернуться (в предложении :finally) к текущему окну (в начале действия -> :exe w_orig.' wincmd w').

Теперь, если другие буферы могли быть открыты или закрыты, нам нужно каждый раз искать целевое окно, поскольку его число могло измениться. Это сделано с bufwinnr(b_tgt).

...