Я пытаюсь заполнить буфер Vim из отдельного потока, используя этот код Python.
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 top
- Хвост Unix
- Новости
- Адрес электронной почты * * 1023
Пока вы работаете, они появляются в некотором предопределенном буфере.
Заранее спасибо.