Vim global variable check throws error in lua (neovim plugin development)
Vim global variable check throws error in lua (neovim plugin development)
我正在尝试使用 lua 编写一个 neovim 插件,当检查变量是否存在时,lua 会抛出如下错误:Undefined variable: g:my_var
方法一:
local function open_bmax_term()
if (vim.api.nvim_eval("g:my_var")) then
print('has the last buff')
else
print('has no the last buff')
end
end
方法二:
local function open_bmax_term()
if (vim.api.nvim_get_var("my_var")) then
print('has the last buff')
else
print('has no the last buff')
end
end
这是一个用 viml
编写的类似函数,它确实有效:(这不会引发任何错误)
fun! OpenBmaxTerm()
if exists("g:my_var")
echo "has the last buff"
else
echo "has no the last buff"
endif
endfun
知道如何在 lua 中使用它吗?我尝试将条件包装在 pcall
中,其效果类似于使其始终为真。
vim.api.nvim_eval("g:my_var")
只是计算一个 vimscript 表达式,因此访问一个不存在的变量会像在 vimscript 中一样出错。您尝试过 vim.api.nvim_eval('exists("g:my_var")')
吗?
您可以通过 vim.g
使用全局 g:
字典来引用您的变量:
if not vim.g.my_var then
print("g:my_var does not exist")
else
print("g:my_var was set to "..vim.g.my_var)
end
您可以参考 :h lua-vim-variables
以查看其他可用的全球 Vim 词典!
我正在尝试使用 lua 编写一个 neovim 插件,当检查变量是否存在时,lua 会抛出如下错误:Undefined variable: g:my_var
方法一:
local function open_bmax_term()
if (vim.api.nvim_eval("g:my_var")) then
print('has the last buff')
else
print('has no the last buff')
end
end
方法二:
local function open_bmax_term()
if (vim.api.nvim_get_var("my_var")) then
print('has the last buff')
else
print('has no the last buff')
end
end
这是一个用 viml
编写的类似函数,它确实有效:(这不会引发任何错误)
fun! OpenBmaxTerm()
if exists("g:my_var")
echo "has the last buff"
else
echo "has no the last buff"
endif
endfun
知道如何在 lua 中使用它吗?我尝试将条件包装在 pcall
中,其效果类似于使其始终为真。
vim.api.nvim_eval("g:my_var")
只是计算一个 vimscript 表达式,因此访问一个不存在的变量会像在 vimscript 中一样出错。您尝试过 vim.api.nvim_eval('exists("g:my_var")')
吗?
您可以通过 vim.g
使用全局 g:
字典来引用您的变量:
if not vim.g.my_var then
print("g:my_var does not exist")
else
print("g:my_var was set to "..vim.g.my_var)
end
您可以参考 :h lua-vim-variables
以查看其他可用的全球 Vim 词典!