lua - 如何使用快捷方式重新加载用 lua 编写的 Neovim 配置?

标签 lua config neovim

我想重新加载我的 neovim只需几次按键即可配置文件,而不必重新启动应用程序。使用 init.vim 时我能够做到这一点使用以下命令:

nnoremap <leader>sv <cmd>source $MYVIMRC<CR>
$MYVIMRC正确指向我的配置入口点。
问题是我改用 lua ,现在我不能这样做。我已阅读文档并尝试了以下变体但没有成功:
util.nnoremap("<leader>sv", "<cmd>luafile $MYVIMRC<CR>")
最后,我找到了一个解决方案:
function load(name)
    local path = vim.fn.stdpath('config') .. '/lua/' .. name .. '.lua'
    dofile(path)
end

load('plugins')
load('config/mapping')
load('lsp/init')
这是错误的,感觉不对。
有没有办法做到这一点?我阅读了 vimpeccable 中的示例,但我想查看其他可用选项,因为我不想安装其他插件。
我知道plenary包括一个重新加载模块的功能,但我不明白如何使用它。一个完整的例子也很好,因为我已经使用了 plenary在我的配置中。

最佳答案

我是 Neovim 的新用户,所以我想我的解决方案可能不适用于某些边缘情况。
该函数刷新当前缓冲区的模块:

local cfg = vim.fn.stdpath('config')
Flush = function()
    local s = vim.api.nvim_buf_get_name(0)
    if string.match(s, '^' .. cfg .. '*') == nil then
        return
    end
    s = string.sub(s, 6 + string.len(cfg), -5)
    local val = string.gsub(s, '%/', '.')
    package.loaded[val] = nil
end
您可以在使用此自动命令写入缓冲区时调用它:
autocmd BufWrite *.lua,*vim call v:lua.Flush()
这样,在你执行 :source $MYVIMRC 之后它还将重新加载更改的 Lua 模块。

关于lua - 如何使用快捷方式重新加载用 lua 编写的 Neovim 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68415300/

相关文章:

regex - 如何在lua中通过正则表达式重复匹配多个表达式

lua - 尝试通过 "pgsql"DSN 连接到 PostgreSQL 数据库在 FreeSWITCH 1.8 上返回 "ERR [unable to open database file]"

netbeans - 以编程方式更改 Netbeans 内部的颜色?

javascript - 如何使用 JavaScript 编写 NeoVim 插件?

vim - 在 Vim 中 : Searching for text but putting the cursor at the end of the match?

lua - Oneliner 从在线加载 Lua 脚本(Gist)并在当前上下文中运行

compilation - 从redis调用lua是解释还是编译?

grails - 配置log4j grails

google-app-engine - Google AppEngine 数据存储配置 : reusable?

vim - NeoVim 插件未安装。 (使用 vim 插件)