diff --git a/.config/nvim/lua/config/servers.lua b/.config/nvim/lua/config/servers.lua index 25e533d..38cc888 100644 --- a/.config/nvim/lua/config/servers.lua +++ b/.config/nvim/lua/config/servers.lua @@ -6,7 +6,7 @@ M.servers = { "arduino_language_server", -- Arduino "bashls", -- Bash "clangd", -- C/C++ - "cmake", -- CMake + -- "cmake", -- CMake "eslint", -- JavaScript "gopls", -- Go "html", -- HTML diff --git a/.config/nvim/lua/keymaps/init.lua b/.config/nvim/lua/keymaps/init.lua index bc91600..f31a442 100644 --- a/.config/nvim/lua/keymaps/init.lua +++ b/.config/nvim/lua/keymaps/init.lua @@ -29,6 +29,7 @@ function M.cmp_nvim_keymaps(map) { keys = "", cmd = map.select_next_item(), desc = "Select next completion item" }, { keys = "", cmd = map.select_prev_item(), desc = "Select previous completion item" }, { keys = "", cmd = map.confirm({ select = true }), desc = "Confirm completion" }, + { keys = "", cmd = map.confirm({ select = true }), desc = "Confirm completion" }, { keys = "", cmd = map.complete(), desc = "Trigger completion" }, { keys = "", cmd = map.abort(), desc = "Abort completion" }, } diff --git a/.config/nvim/lua/keymaps/leaders.lua b/.config/nvim/lua/keymaps/leaders.lua index 82d10e4..3cfe04a 100644 --- a/.config/nvim/lua/keymaps/leaders.lua +++ b/.config/nvim/lua/keymaps/leaders.lua @@ -10,6 +10,13 @@ for _,map in ipairs(leader_general) do table.insert(M, map) end +local leader_q = { -- leader q: Quit + { keys = "q", cmd = ":q", desc = "Quit" }, + { keys = "Q", cmd = ":qa!", desc = "Force Quit" }, + { keys = "w", cmd = ":wq", desc = "Write and Quit" }, + { keys = "W", cmd = ":wall:qa!", desc = "Write all and Force Quit" }, +} + local leader_w = { -- leader w: Windows Management { keys = "h", cmd = "h", desc = "Left Window" }, { keys = "n", cmd = "j", desc = "Down Window" }, @@ -28,9 +35,45 @@ local leader_w = { -- leader w: Windows Management { keys = "I", cmd = ":resize -5", desc = "Decrease Window Width" }, } +local leader_f = { -- leader f: Files/Find + { keys = "f", cmd = ":Telescope fd", desc = "Find Files"}, + { keys = "s", cmd = ":Telescope live_grep", desc = "Grep Files"}, + { keys = "b", cmd = ":Telescope buffers", desc = "List Buffers"}, + { keys = "e", cmd = ":NvimTreeToggle", desc = "Toggle File Explorer" }, +} + +local leader_p = { -- leader p: Project +} + +local leader_b = { -- leader b: Buffer + { keys = "d", cmd = ":bdelete", desc = "Delete Buffer" }, + { keys = "h", cmd = ":bprevious", desc = "Previous Buffer" }, + { keys = "i", cmd = ":bnext", desc = "Next Buffer" }, + { keys = "H", cmd = ":bfirst", desc = "First Buffer" }, + { keys = "I", cmd = ":blast", desc = "Last Buffer" }, + { keys = "0", cmd = ":bfirst", desc = "First Buffer" }, + { keys = "^", cmd = ":bfirst", desc = "First Buffer" }, + { keys = "$", cmd = ":blast", desc = "Last Buffer" }, +} + +for _, map in ipairs(leader_q) do + map.keys = "q" .. map.keys + table.insert(M, map) +end + for _, map in ipairs(leader_w) do map.keys = "w" .. map.keys table.insert(M, map) end +for _, map in ipairs(leader_f) do + map.keys = "f" .. map.keys + table.insert(M, map) +end + +for _, map in ipairs(leader_b) do + map.keys = "b" .. map.keys + table.insert(M, map) +end + return M diff --git a/.config/nvim/lua/plugins/appearance.lua b/.config/nvim/lua/plugins/appearance.lua index 503b314..f6c58b3 100644 --- a/.config/nvim/lua/plugins/appearance.lua +++ b/.config/nvim/lua/plugins/appearance.lua @@ -1,5 +1,6 @@ return { { "catppuccin/nvim", name = "catppuccin" }, + { "RRethy/vim-illuminate" }, { 'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons' }, @@ -7,6 +8,18 @@ return { require("plugins.mod.lualine") end, }, + { + "gbprod/yanky.nvim", + config = function() + require("yanky").setup({ + highlight = { + on_put = true, + on_yank = true, + timer = 500, + }, + }) + end + }, { import = "plugins.mod.alpha-nvim" }, { import = "plugins.mod.winbar-nvim"}, { import = "plugins.mod.bufferline" }, diff --git a/.config/nvim/lua/plugins/fileutils.lua b/.config/nvim/lua/plugins/fileutils.lua index d279055..f2d4577 100644 --- a/.config/nvim/lua/plugins/fileutils.lua +++ b/.config/nvim/lua/plugins/fileutils.lua @@ -2,4 +2,5 @@ return { { import = "plugins.mod.auto-session" }, { import = "plugins.mod.nvim-tree" }, { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" } }, + { import = "plugins.mod.projects" } } diff --git a/.config/nvim/lua/plugins/mod/alpha-nvim.lua b/.config/nvim/lua/plugins/mod/alpha-nvim.lua index b876cf9..5128cb8 100644 --- a/.config/nvim/lua/plugins/mod/alpha-nvim.lua +++ b/.config/nvim/lua/plugins/mod/alpha-nvim.lua @@ -34,11 +34,10 @@ return { dashboard.section.buttons.val.leader = "SPC" dashboard.section.buttons.val = { -- leader = "SPC", - dashboard.button('c', ' 新建文件', ':enew'), - dashboard.button('SPC f f', '󰈞 查找文件', ':Telescope find_files'), - dashboard.button('SPC f h', ' 历史文件', ':Telescope oldfiles'), - dashboard.button('SPC s l', ' 加载会话', ':SessionSearch'), - dashboard.button('SPC f c', ' 转到设置', ':Telescope find_files cwd=~/.config/nvim'), + dashboard.button('p', '󰈞 查找项目', ':Telescope projects'), + dashboard.button('h', ' 历史文件', ':Telescope oldfiles'), + dashboard.button('l', ' 加载会话', ':SessionSearch'), + dashboard.button('c', ' 转到设置', ':Telescope find_files cwd=~/.config/nvim'), dashboard.button('SPC q', '󱊷 退出', ':qa'), } local handle = io.popen('fortune') diff --git a/.config/nvim/lua/plugins/mod/lualine.lua b/.config/nvim/lua/plugins/mod/lualine.lua index 52ca1b5..5cddc86 100644 --- a/.config/nvim/lua/plugins/mod/lualine.lua +++ b/.config/nvim/lua/plugins/mod/lualine.lua @@ -122,21 +122,22 @@ ins_left { padding = { right = 1 }, } -ins_left { - -- filesize component - 'filesize', - cond = conditions.buffer_not_empty, -} +-- ins_left { +-- -- filesize component +-- 'filesize', +-- cond = conditions.buffer_not_empty, +-- } -ins_left { - 'filename', - cond = conditions.buffer_not_empty, - color = { fg = colors.magenta, gui = 'bold' }, -} +-- ins_left { +-- 'filename', +-- cond = conditions.buffer_not_empty, +-- color = { fg = colors.magenta, gui = 'bold' }, +-- } -ins_left { 'location' } -ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } +-- ins_left { 'location' } + +ins_right { 'progress', color = { fg = colors.fg, gui = 'bold' } } ins_left { 'diagnostics', @@ -149,14 +150,21 @@ ins_left { }, } --- Insert mid section. You can make any number of sections in neovim :) --- for lualine it's any number greater then 2 ins_left { function() - return '%=' + return vim.bo.filetype + end, + color = { fg = colors.blue, gui = 'bold' }, +} + +ins_left { + function() + return vim.bo.shiftwidth .. " space" end, } + + ins_left { -- Lsp server name . function() @@ -174,10 +182,18 @@ ins_left { end return msg end, - icon = ' LSP:', + icon = ' ', color = { fg = '#ffffff', gui = 'bold' }, } +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left { + function() + return '%=' + end, +} + -- Add components to right sections ins_right { 'o:encoding', -- option component same as &encoding in viml @@ -199,6 +215,7 @@ ins_right { color = { fg = colors.violet, gui = 'bold' }, } + ins_right { 'diff', -- Is it me or the symbol for modified us really weird diff --git a/.config/nvim/lua/plugins/mod/nvim-cmp.lua b/.config/nvim/lua/plugins/mod/nvim-cmp.lua index ad784b9..80ada85 100644 --- a/.config/nvim/lua/plugins/mod/nvim-cmp.lua +++ b/.config/nvim/lua/plugins/mod/nvim-cmp.lua @@ -1,9 +1,10 @@ - ---- Available LSP goes here ---- Check https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md ---- for available server and name - - +local function set_keymaps(keymaps_cmp) + local mappings = {} + for _, map in ipairs(keymaps_cmp) do + mappings[map.keys] = map.cmd + end + return mappings +end return { "hrsh7th/nvim-cmp", @@ -19,56 +20,47 @@ return { config = function() local cmp = require("cmp") local lspconfig = require("lspconfig") - local capabitilies = require("cmp_nvim_lsp").default_capabilities() - local servers = require("config.servers").servers - local servers_config = require("config.servers").server_config + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local servers_module = require("config.servers") + local servers = servers_module.servers + local servers_config = servers_module.server_config + -- 默认 LSP 配置 local default_server_config = { - capabilities = capabitilies, + capabilities = capabilities, } + local raw_keymaps = require("keymaps").cmp_nvim_keymaps(cmp.mapping) + local mapped = set_keymaps(raw_keymaps) + -- 配置 nvim-cmp cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end, }, - - sources = cmp.config.sources( - -- This order defines the priority of sources. - { + mapping = cmp.mapping.preset.insert(mapped), + sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" }, - }, - { + }, { { name = "buffer" }, { name = "path" }, - } - ), + }), }) - local keymaps = require("keymaps") - local keymaps_cmp = keymaps.cmp_nvim_keymaps(cmp.mapping) - local function set_keymaps() - local mappings = {} - for _, map in ipairs(keymaps_cmp) do - mappings[map.keys] = map.cmd - end - return mappings - end - cmp.setup.mapping = cmp.mapping.preset.insert(set_keymaps()) + -- 配置 cmdline 模式 cmp.setup.cmdline(":", { mapping = cmp.mapping.preset.cmdline(), sources = { { name = "cmdline" }, - -- Use `path` is slow under WSL since WSL loads Windows paths - -- https://github.com/zsh-users/zsh-syntax-highlighting/issues/790 - -- { name = "path" }, - } + -- path completion is slow under WSL + -- Since WSL loads Windows Environment Variables + }, }) + -- 配置 LSP for _, server in ipairs(servers) do - local config = servers_config[server] or {} - config = vim.tbl_extend("force", default_server_config, config) + local config = vim.tbl_deep_extend("force", default_server_config, servers_config[server] or {}) lspconfig[server].setup(config) end end, diff --git a/.config/nvim/lua/plugins/mod/projects.lua b/.config/nvim/lua/plugins/mod/projects.lua new file mode 100644 index 0000000..9135b33 --- /dev/null +++ b/.config/nvim/lua/plugins/mod/projects.lua @@ -0,0 +1,15 @@ +return { + "ahmedkhalf/project.nvim", + config = function() + require("project_nvim").setup({ + detection_methods = { "lsp", "pattern" }, + patterns = { ".git", "Makefile", "package.json" }, + sync_root_with_cwd = true, + silent_chdir = true, + scope_chdir = "global", + }) + + require("telescope").load_extension("projects") + end, + dependencies = { "nvim-telescope/telescope.nvim" }, +} diff --git a/.config/nvim/lua/plugins/mod/winbar-nvim.lua b/.config/nvim/lua/plugins/mod/winbar-nvim.lua index 5b23d74..ca27161 100644 --- a/.config/nvim/lua/plugins/mod/winbar-nvim.lua +++ b/.config/nvim/lua/plugins/mod/winbar-nvim.lua @@ -7,7 +7,7 @@ return { show_file_path = true, show_symbols = true, colors = { - path = '', + path = '#9c1d91', file_name = '', symbols = '', }, diff --git a/.config/nvim/lua/plugins/syntax.lua b/.config/nvim/lua/plugins/syntax.lua index 75f63bb..f32cff2 100644 --- a/.config/nvim/lua/plugins/syntax.lua +++ b/.config/nvim/lua/plugins/syntax.lua @@ -1,3 +1,9 @@ return { { import = "plugins.mod.nvim-treesitter", }, + { 'echasnovski/mini.pairs', version = false, + config = function() + require("mini.pairs").setup() + end, + }, } + diff --git a/.gitignore b/.gitignore index ec8687e..0b80c5f 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,5 @@ vscode/ # OS generated files .DS_Store + +.venv/ diff --git a/zsh/alias.zsh b/zsh/alias.zsh index 689ea2f..9949f23 100644 --- a/zsh/alias.zsh +++ b/zsh/alias.zsh @@ -37,7 +37,7 @@ alias cf=cfiles # Functions # mkcd() { - mkdir -p -- "$0" && cd -P -- "$1" + mkdir -p $1 && cd $1 } cdls(){ cd $1 && ls