如何执行lua脚本
:lua vim.print(package.loaded)
如何映射jk键
vim.keymap.set('i', 'jk', '<Esc>')
vim.keymap.set('t', 'jk', [[<C-\><C-n>]])
上面中的参数t是什么意思,在什么场景中的使用
在 Vim 中,参数 t 代表 Terminal 模式(Terminal mode)。这是 Vim 的一种模式,用于与终端交互,通常用于在 Vim 中运行终端命令或操作。
如何进入Terminal 模式
终端分屏:当你在 Vim 中使用终端分屏时(例如使用 :terminal 命令),你会进入 Terminal 模式。在这个模式下,你可以直接与终端进行交互。
vim.keymap.set的其他使用
vim.keymap.set('n', 'x', function() print("real lua function") end)
vim.keymap.set({'n', 'v'}, '<leader>x', vim.lsp.buf.references, { buffer = true })
vim.keymap.set('i', '<Tab>', function()
return vim.fn.pumvisible() == 1 and "<C-n>" or "<Tab>"
end, { expr = true })
vim.keymap.set('n', '[%%', '<Plug>(MatchitNormalMultiBackward)')
在nvim中,解释上面的几个函数
在 Neovim 中,你提供的代码使用了 vim.keymap.set 函数来设置不同模式下的快捷键。下面是对每个函数的解释:
1. 调用lua函数
vim.keymap.set('n', 'x', function() print("real lua function") end)
- 功能:当你在普通模式下按
x时,会调用一个 Lua 函数,该函数会打印"real lua function"到命令行。
2. 查找引用
vim.keymap.set({'n', 'v'}, '<leader>x', vim.lsp.buf.references, { buffer = true })
- 功能:当按下
<leader>x时,会调用 LSP(语言服务器协议)功能以获取光标下符号的引用。<leader>是一个用户自定义的前缀键,通常在 Vim 中可以通过设置mapleader变量来定义。 - 参数:
{ buffer = true }表示此映射只在当前缓冲区有效。 - 用途:方便开发时快速查找符号的引用。
3. 增强补全体验
vim.keymap.set('i', '<Tab>', function() return vim.fn.pumvisible() == 1 and "<C-n>" or "<Tab>" end, { expr = true })
- 模式:插入模式 (
i) - 功能:当在插入模式下按
<Tab>时,会检查补全菜单(popup menu)是否可见。如果可见,则按<C-n>(向下选择下一个补全选项);如果不可见,则实际插入一个制表符 (<Tab>)。 - 参数:
{ expr = true }指示该映射是一个表达式映射,可以根据条件返回不同的值。 - 用途:增强补全体验,使得在补全可见时可以更方便地选择选项。
4. 调用插件功能
vim.keymap.set('n', '[%%', '<Plug>(MatchitNormalMultiBackward)')
- 模式:普通模式 (
n) - 功能:当按下
[%%时,会触发<Plug>(MatchitNormalMultiBackward),这是一个来自 Matchit 插件的命令,通常用于跳转到匹配的括号或标记的前一个位置。 - 用途:在编程时方便地在配对括号或相应标记之间快速跳转,提高代码导航效率。
如何调用Vim的全局变量和函数
也就是只要是vim点开头的都是nvim中的全局变量,函数和选项。
Neovim 的 Lua 脚本可以访问 Vim 的全局变量、函数和选项
-
vim.call()和vim.fn来调用 Vim 的函数。 -
vim.opt来设置选项,也可以使用vim.opt_local和vim.opt_global来设置局部选项和全局选项。 -
vim.api来调用 Neovim 的 API 函数。 -
vim.schedule来调度函数的执行。 -
vim.str_utf_end和vim.str_utf_start来获取 UTF-8 字符串的字节索引。 -
vim.stricmp来比较两个字符串的大小写。 -
vim.ui_attach和vim.ui_detach来附加和分离 UI 回调函数。 -
vim.ui_open来打开一个 URL 或文件。 -
vim.ui_select来显示一个选择列表。 -
vim.ui_input来获取用户的输入。 -
vim.inspect来获取一个对象的字符串表示。 -
vim.notify来显示一个通知消息。 -
vim.on_key来设置一个键盘事件处理函数。 -
vim.paste来设置一个粘贴事件处理函数。 -
vim.print来打印一个值。 -
vim.schedule_wrap来包装一个函数,使其可以在 Neovim 的调度函数中执行。 -
vim.system来执行一个系统命令。 -
vim.fs来访问文件系统。 -
vim.fs.abspath来获取一个路径的绝对路径。 -
vim.fs.basename来获取一个路径的基名。 -
vim.fs.dirname来获取一个路径的目录名。 -
vim.fs.find来查找一个文件或目录。 -
vim.fs.joinpath来连接两个路径。 -
vim.fs.normalize来标准化一个路径。 -
vim.fs.parents来获取一个路径的父目录。 -
vim.fs.root来查找一个文件或目录的根目录。 -
vim.fs.rm来删除一个文件或目录。 -
vim.glob来使用 glob 模式。 -
vim.lpeg来使用 LPeg 库。 -
vim.regex来使用 Vim 的正则表达式。 -
vim.secure来管理安全设置。 -
vim.version来管理版本信息。 -
vim.iter来使用迭代器。 -
vim.snippet来使用代码片段。 -
vim.text来使用文本处理函数。 -
vim.tohtml来将文本转换为 HTML。 -
vim.validate来验证函数参数。 -
vim.deep_equal来深度比较两个值。 -
vim.deepcopy来深度复制一个值。 -
vim.defaulttable来创建一个默认表格。 -
vim.endswith来测试一个字符串是否以另一个字符串结尾。 -
vim.gsplit来分割一个字符串。 -
vim.is_callable来测试一个值是否可调用。 -
vim.is_array来测试一个值是否是一个数组。 -
vim.is_list来测试一个值是否是一个列表。 -
vim.list_contains来测试一个列表是否包含一个值。 -
vim.list_extend来扩展一个列表。 -
vim.list_slice来获取一个列表的切片。 -
vim.pesc来转义一个模式字符串。 -
vim.ringbuf来创建一个环形缓冲区。 -
vim.spairs来遍历一个表格的键值对。 -
vim.split来分割一个字符串。 -
vim.startswith来测试一个字符串是否以另一个字符串开头。
简写
与 Neovim 的函数交互的 API。
vim.g: 提供与 Neovim 的全局变量交互的 API。vim.b: 提供与 Neovim 的缓冲区变量交互的 API。vim.w: 提供与 Neovim 的窗口变量交互的 API。vim.t: 提供与 Neovim 的标签页变量交互的 API。vim.v: 提供与 Neovim 的 Vim 变量交互的 API。vim.o: 提供与 Neovim 的选项交互的 API。vim.bo: 提供与 Neovim 的缓冲区选项交互的 API。vim.wo: 提供与 Neovim 的窗口选项交互的 API。vim.go: 提供与 Neovim 的全局选项交互的 API。
如何加载lua插件和脚本
Lua 插件
Neovim 的 Lua 插件是使用 Lua 脚本语言编写的。这些插件可以用于实现各种功能,例如语法高亮、自动完成、代码格式化等。Neovim 的 Lua 插件可以通过以下方式加载:
require('plugin-name'): 加载一个 Lua 插件。vim.api.nvim_command('source plugin-name.lua'): 加载一个 Lua 插件。
Lua 脚本
Neovim 的 Lua 脚本是使用 Lua 脚本语言编写的。这些脚本可以用于实现各种功能,例如自定义命令、自动完成、代码格式化等。Neovim 的 Lua 脚本可以通过以下方式加载:
vim.api.nvim_command('source script-name.lua'): 加载一个 Lua 脚本。vim.api.nvim_exec('lua << EOF script-content EOF', false): 执行一个 Lua 脚本。
浙公网安备 33010602011771号