diff --git a/init.vim b/init.vim index c81d816..947c8bf 100644 --- a/init.vim +++ b/init.vim @@ -35,6 +35,4 @@ nnoremap :nohlsearch lua << EOF require("config.lazy") --- local auto_pairs = require('auto-pairs') --- auto_pairs.setup() EOF diff --git a/lua/auto-pairs.lua b/lua/auto-pairs.lua deleted file mode 100644 index ee55590..0000000 --- a/lua/auto-pairs.lua +++ /dev/null @@ -1,132 +0,0 @@ --- 不能正常工作的括号补全代码 --- 完全由ai生成qwq --- -local M = {} - --- 定义需要自动补全的字符对 -local pairs_map = { - ['('] = ')', - ['['] = ']', - ['{'] = '}', - ["'"] = "'", - ['"'] = '"', - ['`'] = '`', - ['<'] = '>', -} - - --- 检查光标前是否是转义字符 -local function is_escaped() - local col = vim.api.nvim_win_get_cursor(0)[2] - local line = vim.api.nvim_get_current_line() - local count = 0 - while col > 0 and line:sub(col, col) == '\\' do - count = count + 1 - col = col - 1 - end - return count % 2 == 1 -end - --- 检查是否在注释或字符串中 -local function is_in_comment_or_string() - local synstack = vim.fn.synstack(vim.fn.line('.'), vim.fn.col('.')) - for _, id in ipairs(synstack) do - local syn = vim.fn.synIDattr(id, 'name') - if string.find(syn, 'comment') or string.find(syn, 'string') then - return true - end - end - return false -end - -local function should_auto_pair(left, right) - local line = vim.api.nvim_get_current_line() - local col = vim.api.nvim_win_get_cursor(0)[2] - local next_char = line:sub(col + 1, col + 1) - - -- 特殊处理引号:如果下一个字符是字母/数字,不自动补全 - if left == "'" or left == '"' or left == '`' then - if next_char:match('%w') then - return false - end - end - - return next_char == '' or next_char:match('%s') or next_char == right -end - -local function auto_pair(left) - local right = pairs_map[left] - if should_auto_pair(left, right) then - local keys = left .. right .. '' - return vim.api.nvim_replace_termcodes(keys, true, true, true) - end - return left -end - --- 修改右括号处理函数 -local function handle_right_pair(right) - local line = vim.api.nvim_get_current_line() - local col = vim.api.nvim_win_get_cursor(0)[2] - local next_char = line:sub(col + 1, col + 1) - - -- 只有当下一个字符确实是配对的右括号时才跳过 - if next_char == right then - -- 检查前面是否有未闭合的左括号 - local before_cursor = line:sub(1, col) - local after_cursor = line:sub(col + 1) - - -- 计算前面左括号和后面右括号的数量 - local left_count = select(2, before_cursor:gsub(vim.pesc(pairs_map[right]), '')) - local right_count = select(2, after_cursor:gsub(vim.pesc(right), '')) - - -- 只有当前面有未闭合的左括号时才跳过 - if left_count > right_count then - return vim.api.nvim_replace_termcodes('', true, true, true) - end - end - return right -end - - --- 主函数,处理自动补全 -function M.setup() - vim.keymap.set('i', '', function() - return M.auto_pairs_bs() - end, {expr = true, noremap = true}) - - for left, right in pairs(pairs_map) do - vim.keymap.set('i', left, function() - if is_escaped() or is_in_comment_or_string(left) then - return left - end - return auto_pair(left) - end, {expr = true, noremap = true}) - - -- 设置右符号 - vim.keymap.set('i', right, function() - if is_escaped() or is_in_comment_or_string() then - return right - end - return handle_right_pair(right) - end, {expr = true, noremap = true}) - end -end - --- 退格键处理 -function M.auto_pairs_bs() - local line = vim.fn.getline('.') - local col = vim.fn.col('.') -- 获取 1-based 列号 - - local prev_char = line:sub(col-1, col-1) - local next_char = line:sub(col, col) - - for left, right in pairs(pairs_map) do - if prev_char == left and next_char == right then - return '' - end - end - - return '' -end - -return M diff --git a/lua/plugins/navigation.lua b/lua/plugins/navigation.lua new file mode 100644 index 0000000..539a37c --- /dev/null +++ b/lua/plugins/navigation.lua @@ -0,0 +1,14 @@ +-- 用于搜索和快速移动 +-- +return { + {"mileszs/ack.vim", }, -- 提供工作方式类似grep的:Ack :Ack!命令 + { + "preservim/nerdtree", + keys = { + { "n", ":NERDTreeFocus", mode = "n", desc = "Nerd Tree Focus" }, + { "", ":NERDTree", mode = "n", desc = "Nerd Tree" }, + { "", ":NERDTreeToggle", mode = "n", desc = "Nerd Tree Toggle" }, + { "", ":NERDTreeFind", mode = "n", desc = "Nerd Tree Find" }, + }, + }, +} diff --git a/lua/plugins/search-move.lua b/lua/plugins/search-move.lua deleted file mode 100644 index 6ed9e3d..0000000 --- a/lua/plugins/search-move.lua +++ /dev/null @@ -1,5 +0,0 @@ --- 用于搜索和快速移动 --- -return { - {"mileszs/ack.vim", }, -- 提供工作方式类似grep的:Ack :Ack!命令 -}