Supermaven Neovim 插件
这个插件 supermaven-nvim 让你能在 Neovim 中使用 Supermaven。如果你在使用 supermaven-nvim 时遇到任何问题,可以考虑提出 issue 或在 Discord 上联系我们。
安装
使用插件管理器,在你的 Neovim 配置文件中运行 .setup({}) 函数。
使用 lazy.nvim
require("lazy").setup({
{
"supermaven-inc/supermaven-nvim",
config = function()
require("supermaven-nvim").setup({})
end,
},
}, {})
使用 packer.nvim
use {
"supermaven-inc/supermaven-nvim",
config = function()
require("supermaven-nvim").setup({})
end,
}
可选配置
默认情况下,supermaven-nvim 将使用 <Tab>
和 <C-]>
键映射来接受和清除建议。你可以通过向 .setup({}) 函数传递 keymaps
表来更改这些键映射。这个表中还包括 accept_word
,它允许部分接受补全,直到下一个单词的结尾。默认情况下,这个键映射设置为 <C-j>
。
ignore_filetypes
表用于在使用 supermaven-nvim 时忽略特定文件类型。如果一个文件类型作为键存在,且其值为 true
,supermaven-nvim 将不会为该文件类型显示建议。
suggestion_color
和 cterm
选项可用于设置建议文本的颜色。
require("supermaven-nvim").setup({
keymaps = {
accept_suggestion = "<Tab>",
clear_suggestion = "<C-]>",
accept_word = "<C-j>",
},
ignore_filetypes = { cpp = true },
color = {
suggestion_color = "#ffffff",
cterm = 244,
},
log_level = "info", -- 设置为 "off" 以完全禁用日志记录
disable_inline_completion = false, -- 禁用内联补全以配合 cmp 使用
disable_keymaps = false -- 禁用内置键映射以实现更多手动控制
})
与 nvim-cmp 一起使用
如果你正在使用 nvim-cmp,你可以通过在 cmp.setup()
函数中添加以下内容来使用 supermaven
源(默认已注册):
-- cmp.lua
cmp.setup {
...
sources = {
{ name = "supermaven" },
}
...
}
它还有一个内置的高亮组 CmpItemKindSupermaven。要为 lspkind 添加 Supermaven 图标,只需将 Supermaven 添加到你的 lspkind 符号映射中。
-- lspkind.lua
local lspkind = require("lspkind")
lspkind.init({
symbol_map = {
Supermaven = "",
},
})
vim.api.nvim_set_hl(0, "CmpItemKindSupermaven", {fg ="#6CC644"})
或者,你可以在 cmp 格式化函数中将 Supermaven 添加到 lspkind symbol_map 中。
-- cmp.lua
cmp.setup {
...
formatting = {
format = lspkind.cmp_format({
mode = "symbol",
max_width = 50,
symbol_map = { Supermaven = "" }
})
}
...
}
以编程方式检查和接受建议
或者,你也可以以编程方式检查是否有活动建议并接受它。
例如:
require("supermaven-nvim").setup({
disable_keymaps = true
})
...
M.expand = function(fallback)
local luasnip = require('luasnip')
local suggestion = require('supermaven-nvim.completion_preview')
if luasnip.expandable() then
luasnip.expand()
elseif suggestion.has_suggestion() then
suggestion.on_accept_suggestion()
else
fallback()
end
end
使用方法
启动 supermaven-nvim 后,你将被提示使用命令 :SupermavenUseFree
选择免费版,或者通过链接激活 Supermaven Pro 订阅,这将连接你的 Supermaven 账户。
如果 Supermaven 已设置,你可以使用 :SupermavenLogout
切换版本。
如果遇到任何问题,你也可以使用 :SupermavenShowLog
查看 path/to/stdpath-cache/supermaven-nvim.log
中的日志消息。或使用 :SupermavenClearLog
清除日志文件。
命令
Supermaven-nvim 提供以下命令:
:SupermavenStart 启动 supermaven-nvim
:SupermavenStop 停止 supermaven-nvim
:SupermavenRestart 重启 supermaven-nvim
:SupermavenToggle 切换 supermaven-nvim
:SupermavenStatus 显示 supermaven-nvim 的状态
:SupermavenUseFree 切换到免费版
:SupermavenUsePro 切换到专业版
:SupermavenLogout 登出 supermaven
:SupermavenShowLog 显示 supermaven-nvim 的日志
:SupermavenClearLog 清除 supermaven-nvim 的日志
Lua API
supermaven-nvim.api
模块提供以下函数,用于从 Lua 与 supermaven-nvim 交互:
local api = require("supermaven-nvim.api")
api.start() -- 启动 supermaven-nvim
api.stop() -- 停止 supermaven-nvim
api.restart() -- 如果 supermaven-nvim 正在运行则重启,否则启动
api.toggle() -- 切换 supermaven-nvim
api.is_running() -- 如果 supermaven-nvim 正在运行则返回 true
api.use_free_version() -- 切换到免费版
api.use_pro() -- 切换到专业版
api.logout() -- 登出 supermaven
api.show_log() -- 显示 supermaven-nvim 的日志
api.clear_log() -- 清除 supermaven-nvim 的日志