-- Mode -- normal_mode = "n", -- insert_mode = "i", -- visual_mode = "v", -- visual_block_mode = "x", -- term_mode = "t", -- command_mode = "c", -- leader key 为空 vim.g.mapleader = " " vim.g.maplocalleader = " " -- MAC 设置alt 键 alt_send_esc = true local opt = { noremap = true, silent = true } -- 本地变量 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) -- 高亮 intent map("n", "i", ":IndentGuidesToggle", opt) -- 开启/关闭 全屏窗口 map("n", "s", ":MaximizerToggle", 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) -- 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 = {} -- nvim-tree map("n", "e", ":NvimTreeToggle", opt) -- 列表快捷键 pluginKeys.nvimTreeList = { -- 打开文件或文件夹 { key = { "o", "<2-LeftMouse>" }, action = "edit" }, { key = "", action = "system_open" }, -- v分屏打开文件 { key = "v", action = "vsplit" }, -- h分屏打开文件 { key = "h", action = "split" }, -- Ignore (node_modules) { key = "i", action = "toggle_ignored" }, -- Hide (dotfiles) { key = ".", action = "toggle_dotfiles" }, { key = "R", action = "refresh" }, -- 文件操作 { key = "a", action = "create" }, { key = "d", action = "remove" }, { key = "r", action = "rename" }, { key = "x", action = "cut" }, { key = "c", action = "copy" }, { key = "p", action = "paste" }, { key = "y", action = "copy_name" }, { key = "Y", action = "copy_path" }, { key = "gy", action = "copy_absolute_path" }, { key = "I", action = "toggle_file_info" }, { key = "n", action = "tabnew" }, -- 进入下一级 { key = { "]" }, action = "cd" }, -- 进入上一级 { key = { "[" }, action = "dir_up" } } -- 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