Отправка ввода в экранное окно из 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 и посмотреть, можно ли извлечь из него что-нибудь полезное.
Вас также может заинтересовать Conque http://code.google.com/p/conque/
Я использую это для Scala