2
我想通过使用此python代码从单独的线程填充Vim的缓冲区。Vim python的buffer.append(行)切换窗口的焦点
python << PYTHON_CODE
import vim
import time
buffer_number = -1
class AppendLineTest(Thread):
def run(self):
buffer = vim.buffers[buffer_number - 1]
for i in range(10):
buffer.append('Line number %s' % i)
time.sleep(1)
PYTHON_CODE
function! s:test()
split TestBuffer
exec 'python buffer_number = '.bufnr('%')
setlocal noswapfile
setlocal bufhidden=delete
setlocal buftype=nofile
setlocal nobuflisted
setlocal nonumber
setlocal nowrap
setlocal nocursorline
python AppendLineTest().start()
endfunction
command! -nargs=0 PythonAppendTest call s:test()
我不知道,访问来自单独的线程Vim的缓冲区是允许的,难怪有一些安全调度方式。 但是,如果允许,我想摆脱追加线发生时的光标跳跃。
所以要重现行为,请将代码保存到一些name.vim文件并在Vim中打开它。然后
:source %
然后
PythonAppendTest
线将被添加的10倍到临时缓冲器中。只要将光标移回到你所在的窗口,你就会明白我在说什么。
如果你想知道为什么会有人需要线从单独的线程添加到缓冲区,这里有一个例子:
- UNIX顶部
- UNIX尾
- RSS
- 电子邮件
工作时,它们出现在某个预定义的缓冲区中。
在此先感谢。
感谢您的链接。太伤心。 – 2009-08-24 13:21:30