Запуск Vim через Lua - PullRequest
       5

Запуск Vim через Lua

3 голосов
/ 28 апреля 2010

Я пишу простое маленькое приложение командной строки Lua, которое будет создавать статический веб-сайт. Я храню свои фрагменты в базе данных sqlite. Извлечь данные из БД просто, как и сохранить их; мой вопрос связан с редактированием данных.

Есть ли элегантный способ передачи данных из Lua в vim? Может ли vim отредактировать буфер памяти и вернуть его? Я планировал запустить редактор через os.execute ('vim'), но только после получения временного дескриптора файла и вывода в него вывода базы данных. Я бы не хотел так трогать файловую систему, но это мой план на случай непредвиденных обстоятельств.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Единственный известный мне способ добиться того, чего вы хотите - это выделить временный файл и отредактировать его.На самом деле мне не стоит беспокоиться о прикосновении к файловой системе: если ваши данные невелики, вы можете надеяться, что операционная система сохранит их в кеше памяти и будет записывать биты на диск только во время циклов простоя.Некоторые системы предлагают части файловой системы, которые гарантированно хранятся в оперативной памяти, но это очень непереносимо.

1 голос
/ 02 мая 2010

io.tmpfile; os.getenv (чтобы взять РЕДАКТОРА, не всем нравится vi (m)); и io.popen - это то, что вам нужно ...

1 голос
/ 29 апреля 2010

Вы можете передать текст в vim, используя стандартный ввод (например, echo 'Hello, world!' | vim -), но я не уверен, как передать отредактированные результаты в стандартный вывод. Итак, первая часть решения в lua будет:

local vim = io.popen('vim -', 'w')
vim:write('Hello, world!')

Возможно, вы сможете достичь желаемых результатов, используя файл с отображенной памятью ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...