Посмотрите на TextAid (в частности, на сервер Perl). Может быть, вы найдете полезные идеи.
--re-EDIT--
Поскольку мне нравится ваша идея, которую я смотрел немного дальше.
Предположив Vim скомпилирован с +clientserver
, вы можете запустить Vim, как это:
$ vim --servername MYSERVER /path/to/tempfile`
на удаленном поле. Vim запускается в режиме сервера, и вы можете отправить его команды, как:
$ vim --servername MYSERVER --remote-send 'ihello<Esc>'
иметь:
hello
на первой линии, если вы пришлете:
$ vim --servername MYSERVER --remote-send 'A world<Esc>'
вы получите:
hello world
Если вы пришлете:
$ vim --servername MYSERVER --remote-send 'yy5p'
вы получите:
hello world
hello world
hello world
hello world
hello world
Если вы отправляете:
$ vim --servername MYSERVER --remote-send ':%s/hello/goodbye cruel<CR>'
вы получите:
goodbye cruel world
goodbye cruel world
goodbye cruel world
goodbye cruel world
goodbye cruel world
который является своего рода прохладным, но вам нужно отправить обратно новое состояние буфера, которое вы делаете с помощью writin g временный файл и отправку его содержимого обратно клиенту после каждой команды. Это означает, что вы много читаете/пишете на своем сервере. Можно также написать макрос, который отправляет содержимое буфера в какой-то внешний процесс при каждом «изменении».
--EDIT--
Если вы следовали по ссылке, а не отвергая мой ответ вы бы увидели, что расширение выше работ, посылая содержимое текстового поля на сервер Perl через HTTP.
Я не думаю, что это имеет значение вообще, если Vim является локальным или на удаленном сервере.
Сервер записывает его во временный файл, который затем открывается с помощью Vim.
Когда Vim записывает файл, его содержимое затем отправляется обратно на расширение сервером.
Ваша часть JS будет делать то, что делает расширение: захватить содержимое текстового поля, отправить его с помощью запроса AJAX POST на ваш сервер, дождаться ответа и обновить содержимое текстовой области.
На самом деле, я думаю, что вы даже можете использовать сценарий выше, как есть. Или, по крайней мере, считать это отправной точкой для собственного приложения.
Никогда не пробовал, но если вы скомпилируете vim с поддержкой '' клиентов + '(http://vimdoc.sourceforge.net/htmldoc/remote.html), его можно запустить в режиме клиент-сервер. См. [Это сообщение в блоге] (http://ajayfromiiit.wordpress.com/2009/10/21/server-and-client-mode-in-vim/) для простого примера. –