Отправка ввода в экранное окно из vim

У меня настроена функция vim, в которой я могу выделить строку текста и выполнить в ближайшем будущем. Вот функция:

 function! Clojure_execline()
     let cl = (getline(line(".")))
     // ...
     exec 'clojure -e "' . cl . '"'
 endfunction

Проблема в том, что он запускается медленно и, поскольку он запускает новый сеанс clojure каждый раз, когда я его запускаю, я не могу вызвать функцию, которую запускал ранее. В идеале мне бы хотелось, чтобы выполнялся скрытый репл, где я мог бы отправлять входные данные из vim и извлекать выходные данные. Я узнал об gnu screen и подумал, что это может мне помочь, но я не знаю, как отправлять ввод из одного окна экрана в другое.

Чтобы прояснить мою проблему, возьмите следующую строку:

(defn add2 [x y] (+ x y))

Я хотел бы иметь возможность выделить эту строку в vim и выполнить в текущем repl. Я хочу иметь возможность вызвать строку ниже и сделать так, чтобы он выполнялся в том же ответе:

(add2 4 5)

После этого я бы хотел получить вывод функции.

Итак, в основном, мой вопрос, как я могу отправить вход из одного окна экрана в другое?

4 ответа

Решение

Нашел то, что искал. Вы можете выполнить это из терминала, чтобы отправить строку непосредственно в стандартный экран окна:

$ screen -X stuff "ls -l\015" # \015 sends a carrige return.

Предложение Джейка Маккрири - хорошее. Есть также несколько других доступных сценариев, вероятно основанных на той же идее:

VimClojure, который говорит, что он "repl в буфере vim"

а также

SlimV, специально поддерживает Clojure

а также

Горилла, я думаю, VimClojure, выше, основан на Горилле

Я не знаю, действительно ли VimClojure делает то, что вы хотите, отправляя результат обратно с экрана в буфер в Vim. Я думаю, что один из способов сделать это - найти что-то, используя функциональность клиент-сервер Vim, возможно, с флагом --remote-send. Увидеть:

:h client-server
:h --remote-send

У меня нет точного ответа, но, возможно, стоит взглянуть на slime.vim и посмотреть, можно ли извлечь из него что-нибудь полезное.

сообщение в блоге об этом

скрипт на vim.org

Вас также может заинтересовать Conque http://code.google.com/p/conque/

Я использую это для Scala

Другие вопросы по тегам