怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

如何执行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_localvim.opt_global 来设置局部选项和全局选项。

  • vim.api 来调用 Neovim 的 API 函数。

  • vim.schedule 来调度函数的执行。

  • vim.str_utf_endvim.str_utf_start 来获取 UTF-8 字符串的字节索引。

  • vim.stricmp 来比较两个字符串的大小写。

  • vim.ui_attachvim.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 脚本。
posted on   超级无敌美少男战士  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
历史上的今天:
2024-01-09 hangfire使用
2023-01-09 note_2023年1月9日22点46分
2023-01-09 node nodejs 绿色版 添加环境变量 淘宝镜像源 全局安装文件夹 npm_global npm_cache
点击右上角即可分享
微信分享提示