通过 Lua 启动 Vim。

我正在写一个简单的 Lua 命令行应用程序,用于构建静态网站。我将片段保存在 sqlite 数据库中。从数据库中检索数据很简单,保存数据也很简单;我的问题来自于编辑数据。

有没有一种优雅的方式可以将数据从 Lua 输入到 vim?vim 是否可以编辑内存缓冲区并返回它?我打算通过 os.execute('vim') 启动编辑器,但只有在获取临时文件句柄并将数据库输出转储到该文件句柄之后才会执行此操作。我希望避免以这种方式接触文件系统,但这是我的备选方案。

原文链接 https://stackoverflow.com/questions/2732541

点赞
stackoverflow用户41661
stackoverflow用户41661

我知道实现你想要的唯一方法是分配一个临时文件并进行编辑。实际上,我并不担心触碰文件系统:如果你的数据很小,你可以期望操作系统将其保留在内存缓存中,并且只在空闲周期期间将位写入磁盘。

有些系统提供了一些保证保存在RAM中的文件系统的部分,但它非常不可移植。

2010-04-28 23:49:10
stackoverflow用户1491
stackoverflow用户1491

你可以使用 stdin 将文本导入 vim(例如 echo 'Hello, world!' | vim -),但我不知道如何将编辑后的结果传递给 stdout。因此,在 lua 中解决方案的第一部分是:

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

也许你可以使用 内存映射文件 来实现想要的结果?

2010-04-29 13:57:53
stackoverflow用户282536
stackoverflow用户282536

io.tmpfileos.getenv(获取 EDITOR,不是每个人都喜欢 vi(m));以及 io.popen,这就是你需要的...

2010-05-02 11:35:43