Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Lua启动Vim_Vim_Lua - Fatal编程技术网

通过Lua启动Vim

通过Lua启动Vim,vim,lua,Vim,Lua,我正在编写一个简单的小Lua命令行应用程序,它将构建一个静态网站。我将我的片段存储在sqlite数据库中。从数据库中检索数据与保存数据一样简单;我的问题来自编辑数据 是否有一种优雅的方式将数据从Lua传输到vim?vim能否编辑并返回内存缓冲区?我计划通过os.execute('vim')启动编辑器,但只有在获取一个临时文件句柄并将数据库输出转储到其中之后。我希望避免以这种方式接触文件系统,但这是我的应急计划。我所知道的实现您想要的目标的唯一方法是分配一个临时文件并对其进行编辑。实际上,我并不担

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


是否有一种优雅的方式将数据从Lua传输到vim?vim能否编辑并返回内存缓冲区?我计划通过os.execute('vim')启动编辑器,但只有在获取一个临时文件句柄并将数据库输出转储到其中之后。我希望避免以这种方式接触文件系统,但这是我的应急计划。

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


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

您可以使用stdin(例如
echo'Hello,world!'| vim-
)将文本通过管道传输到vim,但我不确定如何将编辑后的结果提供给stdout。因此,lua解决方案的第一部分是:

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

也许您可以使用?

io.tmpfile实现您想要的结果;getenv(为了抓取编辑器,不是每个人都喜欢vi(m));而io.popen正是您所需要的…

+1我不会担心访问文件系统,除非它成为一个问题、过早的优化以及诸如此类的问题。