neovim init.lua 模块“lua.plguins”未找到

wup*_*pan 4 lua neovim

我在配置neovim时我在C:\Users\wupan\AppData\Local\nvim\init.lua中添加了配置文件

require("lua.plugins")
Run Code Online (Sandbox Code Playgroud)

和 C:\Users\wupan\AppData\Local\nvim\lua\plugins.lua

return require('packer').startup(function()
use "wbthomason/packer.nvim"
end)
Run Code Online (Sandbox Code Playgroud)

neovim启动后

Error detected while processing C:\Users\wupan\AppData\Local\nvim\init.lua:
E5113: Error while calling lua chunk: C:\Users\wupan\AppData\Local\nvim\init.lua:1: module 'lua.plugins' not found:
    no field package.preload['lua.plugins']
    no file '.\lua\plugins.lua'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\lua\lua\plugins.lua'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\lua\lua\plugins\init.lua'
    no file '.\lua\plugins.dll'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\lua\plugins.dll'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\loadall.dll'
    no file '.\lua.dll'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\lua.dll'
    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\loadall.dll'
stack traceback:
    [C]: in function 'require'
    C:\Users\wupan\AppData\Local\nvim\init.lua:1: in main chunk
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

请问为什么

我尝试安装Lua测试要求

scoop install lua
Run Code Online (Sandbox Code Playgroud)

C:\Users\wupan\code\lua\test.lua

require("hello")
Run Code Online (Sandbox Code Playgroud)

C:\Users\wupan\code\lua\hello.lua

print("hello world")
Run Code Online (Sandbox Code Playgroud)

也存在问题

C:\Users\wupan\scoop\apps\lua\current\lua54.exe: .\test.lua:1: module 'hello' not found:
    no field package.preload['hello']
    no file 'C:\Users\wupan\scoop\apps\lua\current'
    no file 'C:\Users\wupan\scoop\apps\lua\current'
stack traceback:
    [C]: in function 'require'
    .\test.lua:1: in main chunk
    [C]: in ?
Run Code Online (Sandbox Code Playgroud)

Tor*_*xO7 7

问题分析

让我们使用您给我们的以下示例:

C:\Users\wupan\AppData\Local\nvim\init.lua

require("lua.plugins")
Run Code Online (Sandbox Code Playgroud)

C:\Users\wupan\AppData\Local\nvim\lua\plugins.lua

return require('packer').startup(function()
    use "wbthomason/packer.nvim"
end)
Run Code Online (Sandbox Code Playgroud)

现在让我们看一下您的错误消息:

    no file 'C:\Users\wupan\scoop\apps\neovim\current\bin\lua\lua\plugins.lua'
Run Code Online (Sandbox Code Playgroud)

重要的部分是bin\lua\lua这里的东西。这是因为您 require("lua.plugins")开始在运行时路径之一中查找目录(请参阅 参考资料:h rtp获取更多信息)。

解决方案

您只需将内容修复为 C:\Users\wupan\AppData\Local\nvim\init.lua

require("plugins")
Run Code Online (Sandbox Code Playgroud)

因为 Neovim 将查找一个名为 例如 的目录pluginsC:\Users\wupan\scoop\apps\neovim\current\bin\lua因为它位于您的运行时路径中。

小记事

您可以将内容从 C:\Users\wupan\AppData\Local\nvim\lua\plugins.lua以下更改为:

require('packer').startup(function()
    use "wbthomason/packer.nvim"
end)
Run Code Online (Sandbox Code Playgroud)

或者我是怎么做到的:

local packer = require('packer')

packer.startup(function(use)
    use 'wbthomason/packer.nvim'
end)
Run Code Online (Sandbox Code Playgroud)

在我看来,这使得它更具可读性:)