Lua-中-Nvim-API
vim.validate
用于判断一个值和类型是否符合预期, 或者一个值在处理后是否符合预期:
若想要检验 “Hello World” 这个值是否为 “string” 则利用 vim.validate
为:
1 |
|
(键值随便取)
若不符合预期则会报错.
也可以同时检验多个值, 如:
1 |
|
另一种写法是 (arg_value, fn, msg)
, 利用 fn
来检验一个值是否符合预期:
1 |
|
清空一个 buffer
1 |
|
关闭一个 window
1 |
|
第二个参数为是否强制关闭.
去除一个 keymap
1 |
|
清除 highlight
需要用到 vim.api.nvim_buf_clear_namespace()
, 而不能用 vim.api.nvim_buf_add_highlight()
来覆盖一种颜色
注意 vim.api.nvim_buf_clear_namespace()
似乎至少会清除两行, 此时可以通过为另一行添加颜色来达到清除指定行颜色的效果.
判断一个 path 是否为目录
1 |
|
注意 isDir
这里是一个 number 而不是 bool 值.
获取光标所在行的行号
1 |
|
获取光标所在行文本
1 |
|
常用 API
vim.b
, “b” 指 “buffer”, 包含访问当前缓冲区的属性和方法vim.g
, “g” 指 “global”, 用于访问和设置全局变量vim.o
, “o” 指 “options”, 用于访问和设置选项vim.t
, “t” 指 “tabpage”, 用于访问和操作标签页vim.v
, “v” 指 “vim”, 用于访问 vim 内部的函数和变量 (也不知道有哪些)vim.w
, “w” 指 “window”, 用于访问和操作窗口vim.bo
, “bo” 指 “buffer options”, 用于访问缓冲区内的选项vim.fn
, “fn” 指 “function”, 用于调用 vim 中的函数vim.go
, “go” 指 “global options”, 用于访问和设置全局选项vim.wo
, “wo” 指 “window options”, 用于访问和设置窗口的选项vim.api
, 访问 Neovim 提供的 API 方法vim.env
, 获取环境变量vim.json
, 用于处理 JSON 数据vim.loop
, 用于处理时间循环vim.cmd()
, 执行 vim 命令vim.types
, 包含 Neovim Lua API 中的数据类型
获取文件类型
1 |
|
调用外部脚本
用 vim.fn.system()
, 其返回外部脚本的输出, 如:
1 |
|
传递参数如:
1 |
|
vim.fn.expand 函数的使用
expand
函数的原型为:
1 |
|
其接受一个字符串 (或列表) 为参数, 这个字符串不是具体的字符, 而是指示其功能, 让 expand
来获取文件路径、环境变量、当前文件名等信息.
如:
1 |
|
的返回值是当前光标下的单词.
1 |
|
返回当前文件名.
设置键位映射
格式为:
1 |
|
如:
1 |
|
查看对象
三种方法:
vim.inspect
:
1 |
|
vim.print
:
1 |
|
=
:
1 |
|
让内容在新的 buffer 中显示:
1.
1 |
|
1
2
3:redir @a
:lua =package.loaded
:redir END
vim.loop
其包含了 neovim 中的事件循环 (event-loop).
事件循环
通过循环不断地监听事件,并根据事件的类型和优先级执行相应的回调函数或任务
vim.notify
用于显示一个通知, 都输出在 :messages
中:
vim.notify
, 可多次调用vim.notify_once
, 多次调用也只运行一次
plenary.nvim
其提供了一些有用的 Lua 模块:
- plenary.async
- plenary.async_lib
- plenary.job
- plenary.path
- plenary.scandir
- plenary.context_manager
- plenary.test_harness
- plenary.filetype
- plenary.strings
Neovim UI APIs
1 |
|
创建 autocmd
1 |
|
运行 vimscript
1 |
|
获取/设置寄存器中的值
1 |
|
Lua-中-Nvim-API
http://example.com/2023/09/08/Lua-中-Nvim-API/