Vim,如何滚动到命名缓冲区的底部
我有一个vim脚本,它使用以下命令将输出拆分到一个新窗口:Vim,如何滚动到命名缓冲区的底部,vim,scripting,Vim,Scripting,我有一个vim脚本,它使用以下命令将输出拆分到一个新窗口: below split +view foo 我一直在试图找到一种方法,从任意缓冲区滚动到foo的底部,或是一种设置,使其默认显示缓冲区的底线 我在vim脚本的python块中完成了大部分工作。所以我有点像: python << endpython import vim import time import thread import sys def myfunction(string,sleeptime,*args):
below split +view foo
我一直在试图找到一种方法,从任意缓冲区滚动到foo的底部,或是一种设置,使其默认显示缓冲区的底线
我在vim脚本的python块中完成了大部分工作。所以我有点像:
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
python我通常会记录新的缓冲区编号(让b_tgt=bufnr(“%”)
),更准确地说,是它的windows编号。然后,在try finally
块中,我记录当前窗口编号(让w_orig=bufwinnr(“%”)
),跳转到我需要做某事的窗口(:exe w_tgt。'wincmd w'
),做某事(:normal!G
,在您的情况下),然后跳回(在:finally
子句中)到当前窗口(在操作开始时->:exe w_orig'wincmd w'
)
现在,如果其他缓冲区可能已打开或关闭,我们需要每次查找目标窗口,因为其编号可能已更改。这是通过bufwinnr(b_tgt)
完成的。我通常会记录新的缓冲区编号(让b_tgt=bufnr(“%”)
)然后,在try finally
块中,我记录当前的窗口号(让w_orig=bufwinnr(“%”)
),跳转到我需要做某事的窗口(:exe w_tgt。'wincmd w'
),做这件事(:normal!G
),然后跳回(在:finally
子句中)到当前窗口(在操作开始处->:exe w_orig'wincmd w'
)
现在,如果其他缓冲区可能已经打开或关闭,我们需要在每次都查找目标窗口,因为它的编号可能已经更改
为了记录在案,我想在不切换到其他窗口的情况下设置其他窗口的光标。很明显,Neovim中有一个非常全面的API,函数以nvim\u…
开始。我用vimscript或多或少地解决了这个问题:
let l:bufname = "foo"
let l:lnum = getbufinfo(l:bufname)[0]['linecount']
let l:win_id = bufwinid(l:bufname)
call nvim_win_set_cursor(l:win_id, [l:lnum, 0])
当然,如果要对当前窗口执行操作,可以使用
setpos()
函数在所有vim版本中都可用。为了记录,我想设置不同窗口的光标,而不切换到它。很明显,在Neovim中有一个非常全面的API,函数以nvim\ux…
开始。我在vimscript中或多或少地解决了这个问题:
let l:bufname = "foo"
let l:lnum = getbufinfo(l:bufname)[0]['linecount']
let l:win_id = bufwinid(l:bufname)
call nvim_win_set_cursor(l:win_id, [l:lnum, 0])
当然,如果要对当前窗口执行操作,可以使用
setpos()
功能在所有vim版本中都可用。是滚动很重要,还是您只是想将其发送到缓冲区的底部?我希望它留在缓冲区的底部,因为所添加的内容超出了可查看的空间。或多或少像一个普通的控制台窗口。滚动很重要还是很重要是否希望被传递到缓冲区的底部?我希望它保持在缓冲区的底部,因为所附加的内容超出了可视空间。或多或少像一个普通的控制台窗口。