Nvim-UI-基础

参考

主要是两个函数:

  • vim.ui.input() (可见文档 :h vim.ui.input())
  • vim.ui.select() (可见文档 :h vim.ui.select())

vim.ui.input() 的使用

语法结构:

1
vim.ui.input({opts}, {on_confirm})

第一个参数 {opts}

是一个 table, 有四个可选的键值对:

  • prompt, string or nil, 提示词
  • default, string or nil, input 的占位词 (默认回答)
  • completion, string or nil, 不是随便的字符串,
  • highlight, function, 用于高亮 user inputs, 返回值类似 {begin_col, end_col, "Highlight Group Name"}

第二个参数 {on_confirm}

是一个 anonymous function, 应该是确认输入后会被自动调用, 输入会保存在传入函数的第一个形参中.

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vim.api.nvim_set_hl(0, "InputHighlight", { fg = "#ffffff", ctermfg = 255, bg = "#00ff00", ctermbg = 14 })

vim.ui.input({
prompt = "Enter a value: ",
default = "default value",
completion = "color",
highlight = function(input)
if string.len(input) > 8 then
return { { 0, 8, "InputHighlight" } }
else
return {}
end
end,
}, function(input)
if input then
print("You entered " .. input)
else
print "You cancelled"
end
end)

vim.ui.select()

语法结构:

1
vim.ui.select({items}, {opts}, {on_choice})
  • {items}, table, 任意内容, 即要显示在列表中的东西
  • {opts}, table, 选项, 包括 prompt, format_item, kind
  • {on_choice}, function, 同样是选中时调用, 选中的内容会传给第一个形参

可用的选项:

  • prompt, string|nil, 提示词
  • format_item, function, 对每一个 item 调用 (item 会作为第一个形参传入)
  • kind, string|nil, 提示 items 的类型

示例:

1
2
3
4
5
6
7
8
9
10
11
12
vim.ui.select({ 'tabs', 'spaces' }, {
prompt = 'Select tabs or spaces:',
format_item = function(item)
return "I'd like to choose " .. item
end,
}, function(choice)
if choice == 'spaces' then
vim.o.expandtab = true
else
vim.o.expandtab = false
end
end)

Nvim-UI-基础
http://example.com/2024/01/16/Nvim-UI-基础/
作者
Jie
发布于
2024年1月16日
许可协议