VIM: выполнение Ruby-скрипта в каждой строке при перемещении курсора и обновление буфера для отображения в разделенном окне

#vim #cursor #buffer

#vim #буфер #текстовый курсор

Вопрос:

Я пытаюсь решить проблему с VIM. Вот чего я пытаюсь добиться:

У меня есть файл с несколькими строками в нем. Когда я перемещаю курсор от строки к строке, я хочу отправить текущую строку в качестве аргумента в Ruby script. Результат этого скрипта должен быть перенаправлен в буфер VIM, который будет показан в разделенном окне над исходным текстом.

до сих пор мне удавалось написать функцию, которая отправляет одну строку в скрипт, а результаты отображаются в буфере выше. Я не уверен, как заставить эту функцию запускаться каждый раз, когда курсор перемещается на новую строку, и заставить результаты обновлять тот же буфер. Любые указатели будут оценены.

Мой код:

 function! BB()
    redir => a
    let str = getline(".")
    let str1 = """ . str . """
    silent execute "!${HOME}/scripts/test.rb " . str1
    redir END
    new
    put! = a
endfunction
command! -nargs=0 BB echo BB()
  

Ответ №1:

Первое, что приходит мне на ум, — это отображение движений клавиш. Что-то вроде:

 map j j:call BB()<CR>
map k k:call BB()<CR>
  

Комментарии:

1. Я пробовал отображать только ‘j’, и каждый раз, когда я перехожу к новой строке, вывод открывается в новом буфере вместе со старым. Итак, теперь у меня есть 3 буфера: (