如何在Neovim的init.vim中引入外部Lua文件的数据库变量?
在Neovim 0.8的init.vim中导入Lua文件变量并配置vim-dadbod
1. 正确编写Lua变量文件
在~/.config/nvim/lua/myVars.lua中定义并返回数据库参数——Lua模块必须通过return暴露变量,才能被require读取:
return { db_user = "你的数据库用户名", db_pass = "你的数据库密码", db_host = "localhost", db_port = "3306", db_name = "目标数据库名" }
2. 在init.vim中导入变量并配置dadbod
有两种简洁的实现方式:
方式一:将Lua变量转为Vim全局变量后使用
在init.vim中嵌入Lua代码块,把Lua模块的变量赋值给Vim全局变量,再用Vim脚本拼接连接字符串:
" 导入Lua模块并转换为Vim全局变量 lua << EOF local myVars = require('myVars') vim.g.db_user = myVars.db_user vim.g.db_pass = myVars.db_pass vim.g.db_host = myVars.db_host vim.g.db_port = myVars.db_port vim.g.db_name = myVars.db_name EOF " 配置vim-dadbod的数据库连接 let g:dbs = [ \ 'mysql://' . g:db_user . ':' . g:db_pass . '@' . g:db_host . ':' . g:db_port . '/' . g:db_name, \ ] " 可选:设置db-ui的连接配置保存路径 let g:db_ui_save_location = $HOME . '/.config/nvim/db_ui'
方式二:直接在Lua中完成dadbod配置
如果更习惯Lua语法,可直接在Lua代码块里拼接连接字符串并赋值给vim.g.dbs:
lua << EOF local myVars = require('myVars') -- 格式化拼接数据库连接字符串 local db_conn = string.format( 'mysql://%s:%s@%s:%s/%s', myVars.db_user, myVars.db_pass, myVars.db_host, myVars.db_port, myVars.db_name ) -- 赋值给dadbod的全局变量 vim.g.dbs = { db_conn } EOF
3. 安全注意事项
为避免密码泄露,务必限制变量文件的访问权限:
chmod 600 ~/.config/nvim/lua/myVars.lua
内容的提问来源于stack exchange,提问作者Borjão
相关产品推荐
相关产品推荐

