-- Mode -- normal_mode = "n", -- insert_mode = "i", -- visual_mode = "v", -- visual_block_mode = "x", -- term_mode = "t", -- command_mode = "c", -- leader key 为空 local uConfig = require("uConfig") local keys = uConfig.keys vim.g.mapleader = " " vim.g.maplocalleader = " " -- MAC 设置alt 键 alt_send_esc = true local opt = { noremap = true, silent = true, } local keymap = vim.keymap keymap.set("i", "jj", "") -- 本地变量 local map = vim.api.nvim_set_keymap -- 取消 s 默认功能 map("n", "s", "", opt) map("n", "sv", ":vsp", opt) map("n", "sh", ":sp", opt) map("n", "sc", "c", opt) map("n", "so", "o", opt) -- 切换窗口 map("n", "", "l", opt) map("n", "", "j", opt) map("n", "", "k", opt) map("n", "", "h", opt) -- 返回dashboard 主页 map("n", "h", ":Dashboard", opt) -- gitsigns map("n", "git", ":Gitsigns toggle_current_line_blame", opt) -- lazygit map("n", "lg", ":LazyGit", opt) -- terminal 相关 map("n", "t", ":FloatermToggle", opt) -- 开启/关闭 全屏窗口 map("n", "s", ":MaximizerToggle", opt) -- 开始错误列表 map("n", "i", ":TroubleToggle", opt) -- rename 插件 map("n", "rn", ":IncRename", opt) -- 代码缩进 map("v", "<", "", ">gv", opt) map("v", "J", ":move '>+1gv-gv>'", opt) map("v", "K", ":move '<-2gv-gv>'", opt) -- 保存配置 map("n", "w", ":w", opt) map("n", "wq", ":wqa!", opt) -- 退出 map("n", "qq", ":q!", opt) map("n", "q", ":qa!", opt) -- 上下滚动浏览 map("n", "", "5j", opt) map("n", "", "5k", opt) map("v", "", "5j", opt) map("v", "", "5k", opt) -- hop 相关 map("n", "hw", ":HopWord", opt) map("n", "hww", ":HopWordMW", opt) -- Telescope 查找文件 -- 文件名查找 map("n", "f", ":Telescope find_files", opt) -- 全局搜索 关键词key 查找 map("n", "k", ":Telescope live_grep", opt) -- git 文件 map("n", "g", ":Telescope git_files", opt) -- project map("n", "p", ":Telescope projects", opt) -- packer update map("n", "u", ":PackerUpdate", opt) -- prettier map("n", "cf", ":Prettier", opt) -- 插件快捷键 local pluginKeys = {} local lsp = uConfig.lsp pluginKeys.mapLSP = function(mapbuf) -- rename --[[ Lspsaga 替换 rn mapbuf("n", "rn", "Lspsaga rename", opt) --]] mapbuf("n", lsp.rename, "lua vim.lsp.buf.rename()") -- code action --[[ Lspsaga 替换 ca mapbuf("n", "ca", "Lspsaga code_action", opt) --]] mapbuf("n", lsp.code_action, "lua vim.lsp.buf.code_action()") -- go xx --[[ mapbuf('n', 'gd', 'Lspsaga preview_definition', opt) mapbuf("n", "gd", "lua vim.lsp.buf.definition()", opt) --]] mapbuf("n", lsp.definition, function() require("telescope.builtin").lsp_definitions({ initial_mode = "normal", -- ignore_filename = false, }) end) --[[ mapbuf("n", "gh", "Lspsaga hover_doc", opt) Lspsaga 替换 gh --]] mapbuf("n", lsp.hover, "lua vim.lsp.buf.hover()") --[[ Lspsaga 替换 gr mapbuf("n", "gr", "lua vim.lsp.buf.references()", opt) mapbuf("n", "gr", "Lspsaga lsp_finder", opt) --]] mapbuf( "n", lsp.references, "lua require'telescope.builtin'.lsp_references(require('telescope.themes').get_ivy())" ) if vim.fn.has("nvim-0.8") == 1 then mapbuf("n", lsp.format, "lua vim.lsp.buf.format({ async = true })") else mapbuf("n", lsp.format, "lua vim.lsp.buf.formatting()") end --[[ Lspsaga 替换 gp, gj, gk mapbuf("n", "gp", "lua vim.diagnostic.open_float()", opt) mapbuf("n", "gj", "lua vim.diagnostic.goto_next()", opt) mapbuf("n", "gk", "lua vim.diagnostic.goto_prev()", opt) --]] -- diagnostic -- mapbuf("n", "gp", "Lspsaga show_line_diagnostics", opt) -- mapbuf("n", "gj", "Lspsaga diagnostic_jump_next", opt) -- mapbuf("n", "gk", "Lspsaga diagnostic_jump_prev", opt) mapbuf("n", lsp.open_flow, "lua vim.diagnostic.open_float()") mapbuf("n", lsp.goto_next, "lua vim.diagnostic.goto_next()") mapbuf("n", lsp.goto_prev, "lua vim.diagnostic.goto_prev()") -- 未用 -- mapbuf("n", "gD", "lua vim.lsp.buf.declaration()", opt) -- mapbuf("n", "gi", "lua vim.lsp.buf.implementation()", opt) -- mapbuf('n', 'q', 'lua vim.diagnostic.setloclist()', opt) -- mapbuf("n", "", "lua vim.lsp.buf.signature_help()", opt) -- mapbuf('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opt) -- mapbuf('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opt) -- mapbuf('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opt) -- mapbuf('n', 'D', 'lua vim.lsp.buf.type_definition()', opt) end -- nvim-tree map("n", "e", ":NvimTreeToggle", opt) -- 列表快捷键 -- lsp 快捷键 pluginKeys.lspList = function(bufnr) -- bufmap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opt) bufmap(bufnr, "n", "rn", "Lspsaga rename", opt) -- bufmap(bufnr, "n", "ca", "lua vim.lsp.buf.cade_action()", opt) bufmap(bufnr, "n", "ca", "Lspsaga cade_action", opt) -- go to -- bufmap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opt) bufmap(bufnr, "n", "gd", "Lspsaga goto_definition", opt) -- bufmap(bufnr, "n", "gd", "Lspsaga peek_definition", opt) bufmap(bufnr, "n", "gt", "Lspsaga goto_type_definition", opt) bufmap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opt) -- bufmap(bufnr, "n", "gh", "lua vim.lsp.buf.hover()", opt) bufmap(bufnr, "n", "gh", "Lspsaga hover_doc", opt) bufmap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opt) -- bufmap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opt) bufmap(bufnr, "n", "gr", "Lspsaga lsp_finder", opt) -- diagnostic -- bufmap(bufnr, "n", "go", "lua vim.diagnostic.open_float()", opt) bufmap(bufnr, "n", "go", "Lspsaga show_line_diagnostics", opt) -- bufmap(bufnr, "n", "gn", "lua vim.diagnostic.goto_next()", opt) bufmap(bufnr, "n", "gn", "Lspsaga diagnostic_jump_next", opt) -- bufmap(bufnr, "n", "gp", "lua vim.diagnostic.goto_prev()", opt) bufmap(bufnr, "n", "gp", "Lspsaga diagnostic_jump_prev", opt) bufmap(bufnr, "n", "f", "lua vim.lsp.buf.format({ async = true })", opt) bufmap(bufnr, "n", [[]], "Lspsaga term_toggle", opt) bufmap(bufnr, "t", [[]], "Lspsaga term_toggle", opt) end -- nvim-cmp 自动补全 pluginKeys.cmp = function(cmp) return { -- 出现补全 [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), -- 取消 [""] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close(), }), -- 上一个 [""] = cmp.mapping.select_prev_item(), -- 下一个 [""] = cmp.mapping.select_next_item(), -- 确认 [""] = cmp.mapping.confirm({ select = true, behavior = cmp.ConfirmBehavior.Replace, }), -- 如果窗口内容太多,可以滚动 [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), } end return pluginKeys