From fba3be8fd8a0f5cf3ca7fc6002e22edc4e503630 Mon Sep 17 00:00:00 2001 From: laily Date: Sat, 17 Jan 2026 21:52:18 +0800 Subject: [PATCH] fix: nvim --- nvim/lua/config/keymaps.lua | 11 ++++++++-- nvim/lua/plugins/fzf-lua.lua | 21 ++++++++++++++++++ nvim/lua/plugins/mason.lua | 3 ++- nvim/lua/plugins/telescope.lua | 39 ++++++++++++++++++++++++++++++++-- 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 nvim/lua/plugins/fzf-lua.lua diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua index 1fe193d..54fd178 100644 --- a/nvim/lua/config/keymaps.lua +++ b/nvim/lua/config/keymaps.lua @@ -101,7 +101,7 @@ keymap.set('n', "sb", "Telescope git_branches", {desc= "Checkou keymap.set('n', "sc", ":nohl", {desc= "no highlight" }) keymap.set('n', "sd", "Telescope lsp_document_diagnostics", {desc= "Document Diagnostics" }) keymap.set('n', "sD", "Telescope lsp_workspace_diagnostics", {desc= "Workspace Diagnostics" }) -keymap.set('n', "sf", "Telescope find_files", {desc= "Find File" }) + keymap.set('n', "sf", "Telescope find_files", {desc= "Find File" }) keymap.set('n', "sr", function() require("telescope.builtin").oldfiles({ cwd = vim.loop.cwd() }) end, {desc= "Old File" }) keymap.set('n', "sm", "Telescope marks", {desc= "Marks" }) keymap.set('n', "sM", "Telescope man_pages", {desc= "Man Pages" }) @@ -130,7 +130,9 @@ keymap.set('n', "zz", "TZAtaraxis", {desc= "toggle zen" }) keymap.set('n', ';', ':Dashboard', { noremap = true, silent = true }) -- Ctrl -keymap.set('n', '', ":Telescope find_files", { noremap = true, silent = true }) +keymap.set('n', '', function() + require("telescope.builtin").find_files() +end, { noremap = true, silent = true, desc = "Find Files" }) -- better window movement keymap.set('n', '', 'h', { silent = true }) keymap.set('n', '', 'j', { silent = true }) @@ -144,6 +146,11 @@ keymap.set('n', '', ':vertical resize +2', { silent = true }) keymap.set('n', '', ':call QuickFixToggle()', { noremap = true, silent = true }) +-- Override two spaces (LazyVim default fzf) with Telescope live_grep +-- Search for keywords in file contents +keymap.set('n', ' ', function() + require("telescope.builtin").live_grep() +end, { noremap = true, silent = true, desc = "Search in Files (two spaces)" }) -- Other -- better edit diff --git a/nvim/lua/plugins/fzf-lua.lua b/nvim/lua/plugins/fzf-lua.lua new file mode 100644 index 0000000..3ec2dab --- /dev/null +++ b/nvim/lua/plugins/fzf-lua.lua @@ -0,0 +1,21 @@ +return { + { + "ibhagwan/fzf-lua", + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + keys = { + -- 如果需要使用 fzf-lua 的快捷键,可以在这里添加 + }, + config = function() + require("fzf-lua").setup({ + -- fzf-lua 的配置 + winopts = { + height = 0.85, + width = 0.80, + }, + }) + end, + }, +} + diff --git a/nvim/lua/plugins/mason.lua b/nvim/lua/plugins/mason.lua index 85205ab..790ee68 100644 --- a/nvim/lua/plugins/mason.lua +++ b/nvim/lua/plugins/mason.lua @@ -9,10 +9,11 @@ return { --"bashls", "shfmt", --"tailwindcss", - --"tsserver", + "tsserver", -- TypeScript/JavaScript LSP "pylyzer", --"cssls", "bufls", -- Protocol Buffers LSP + "gopls", -- Go LSP }) end, }, diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua index 2d8253f..7b4c77b 100644 --- a/nvim/lua/plugins/telescope.lua +++ b/nvim/lua/plugins/telescope.lua @@ -5,6 +5,10 @@ return { { "nvim-telescope/telescope-fzf-native.nvim", build = "make", + -- 确保编译成功,如果 make 失败,尝试 cmake + cond = function() + return vim.fn.executable("make") == 1 or vim.fn.executable("cmake") == 1 + end, }, "nvim-telescope/telescope-file-browser.nvim", }, @@ -125,6 +129,15 @@ return { layout_config = { prompt_position = "top" }, sorting_strategy = "ascending", winblend = 0, + -- 确保文件查找器正常工作 + file_ignore_patterns = { + "^.git/", + "^node_modules/", + "^.DS_Store", + }, + -- 使用 fzf 排序(如果可用) + path_display = { "truncate" }, + dynamic_preview_title = true, mappings = { i = { [""] = actions.close, @@ -151,6 +164,22 @@ return { }, }, }) + + -- Configure live_grep: use ripgrep if available, otherwise fallback to grep + -- Note: Install ripgrep for better performance: brew install ripgrep + if vim.fn.executable("rg") == 0 then + vim.notify("ripgrep (rg) not found. live_grep will use grep (slower). Install with: brew install ripgrep", vim.log.levels.WARN) + opts.defaults = opts.defaults or {} + opts.defaults.vimgrep_arguments = { + "grep", + "--recursive", + "--no-heading", + "--with-filename", + "--line-number", + "--column", + "--smart-case", + } + end opts.extensions = vim.tbl_deep_extend("force", opts.extensions or {}, { file_browser = { theme = "dropdown", @@ -182,8 +211,14 @@ return { }, }) telescope.setup(opts) - require("telescope").load_extension("fzf") - require("telescope").load_extension("file_browser") + + -- 安全地加载扩展 + pcall(function() + require("telescope").load_extension("fzf") + end) + pcall(function() + require("telescope").load_extension("file_browser") + end) end, }, } \ No newline at end of file