VIM进阶插件补充

一. telescope

1. 下载fd

👉 Telescope 默认搜索慢,要加 ripgrep + fd

安装:

bash 复制代码
sudo apt install ripgrep fd-find

Ubuntu里 fdfdfind,建议做个别名

bash 复制代码
ln -s $(which fdfind) ~/.local/bin/fd

2. 配置文件

把下面的内容放在你配置文件的 require("lazy").setup({ ... }) 里面(随便位置)

bash 复制代码
{
  "nvim-telescope/telescope.nvim",
  dependencies = {
    "nvim-lua/plenary.nvim",
    { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }
  },
  config = function()
    local telescope = require("telescope")

    telescope.setup({
      defaults = {
        prompt_prefix = "🔍 ",
        selection_caret = "➤ ",
        layout_config = {
          prompt_position = "top",
        },
        sorting_strategy = "ascending",
        file_ignore_patterns = { "node_modules", ".git/" },
      },
    })

    -- 启用 fzf 加速
    telescope.load_extension("fzf")

    local builtin = require("telescope.builtin")

    -- 🔥 核心快捷键(不和你现有冲突)
    vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Find files" })
    vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Live grep" })
    vim.keymap.set("n", "<leader>fw", builtin.grep_string, { desc = "Search word under cursor" })
    vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Buffers" })
    vim.keymap.set("n", "<leader>fr", builtin.oldfiles, { desc = "Recent files" })

    -- git(和你 gitsigns / diffview 完美配合🔥)
    vim.keymap.set("n", "<leader>gc", builtin.git_commits, { desc = "Git commits" })
    vim.keymap.set("n", "<leader>gs", builtin.git_status, { desc = "Git status" })
  end
},

3. 功能介绍

<leader>ff → 找文件(最常用)

👉 作用:在项目里找文件

<leader>fg → 全局搜索(神器🔥)

👉 作用:在所有文件内容里搜字符串

<leader>fw → 当前词搜索(超快)

👉 作用:直接搜索光标下的单词

<leader>fb → buffer 列表

👉 作用:切换当前打开的文件

<leader>fr → 最近文件

👉 作用:打开最近用过的文件

对于切换当前打开的文件,会有个缓存区,有个时候我们需要删除一些内容,需要配置一些内容,具体配置如下。

直接替换这一段🔥

bash 复制代码
config = function()
  local telescope = require("telescope")
  local actions = require("telescope.actions")

  telescope.setup({
    defaults = {
      prompt_prefix = "🔍 ",
      selection_caret = "➤ ",
      layout_config = {
        prompt_position = "top",
      },
      sorting_strategy = "ascending",
      file_ignore_patterns = { "node_modules", ".git/" },

      -- 👇 加在这里!!!
      mappings = {
        i = {
          ["<C-d>"] = actions.delete_buffer,
        },
        n = {
          ["<C-d>"] = actions.delete_buffer,
        },
      },
    },
  })

  telescope.load_extension("fzf")

  local builtin = require("telescope.builtin")

  vim.keymap.set("n", "<leader>ff", builtin.find_files)
  vim.keymap.set("n", "<leader>fg", builtin.live_grep)
  vim.keymap.set("n", "<leader>fw", builtin.grep_string)
  vim.keymap.set("n", "<leader>fb", builtin.buffers)
  vim.keymap.set("n", "<leader>fr", builtin.oldfiles)
end

之后就可以使用ctrl +d 快捷键,删除某个buffer的文件了。

二、toggleterm.nvim

1. 基本配置

bash 复制代码
{
  "akinsho/toggleterm.nvim",
  version = "*",
  config = function()
    require("toggleterm").setup({
      open_mapping = [[<c-\>]],  -- 快捷键
      direction = "float",       -- float / horizontal / vertical
      shade_terminals = true,
      start_in_insert = true,
    })
  end,
}

2. 使用

Ctrl + \ 打开 / 关闭终端

### 按住ctrl + \ 是关闭当前窗口,终端的历史信息仍然保存

### ctrl + d 是彻底关闭当前的终端

### 可以在这个终端里面tmux, 可以实现多终端控制

三、 LSP配置

这个作用主要是代码补全,之后查定义什么的。

gd → 跳到定义(最常用🔥)

gr → 查引用

K → 查看文档(悬停说明)

bash 复制代码
{
  "neovim/nvim-lspconfig",
  dependencies = {
    "hrsh7th/cmp-nvim-lsp",
  },
  config = function()
    local capabilities = require("cmp_nvim_lsp").default_capabilities()

    vim.lsp.config("pyright", {
      capabilities = capabilities,
    })

    vim.lsp.config("clangd", {
      capabilities = capabilities,
    })

    vim.lsp.config("lua_ls", {
      capabilities = capabilities,
      settings = {
        Lua = {
          diagnostics = {
            globals = { "vim" },
          },
          workspace = {
            checkThirdParty = false,
          },
        },
      },
    })

    vim.lsp.enable("pyright")
    vim.lsp.enable("clangd")
    vim.lsp.enable("lua_ls")

    vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to definition" })
    vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "Go to references" })
    vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover docs" })
    vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "Rename" })
    vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code action" })
  end,
},
bash 复制代码
{
  "hrsh7th/nvim-cmp",
  dependencies = {
    "hrsh7th/cmp-nvim-lsp",
    "hrsh7th/cmp-buffer",
    "hrsh7th/cmp-path",
    "L3MON4D3/LuaSnip",
  },
  config = function()
    local cmp = require("cmp")

    cmp.setup({
      snippet = {
        expand = function(args)
          require("luasnip").lsp_expand(args.body)
        end,
      },
      mapping = cmp.mapping.preset.insert({
        ["<C-Space>"] = cmp.mapping.complete(),
        ["<CR>"] = cmp.mapping.confirm({ select = true }),
        ["<Tab>"] = cmp.mapping.select_next_item(),
        ["<S-Tab>"] = cmp.mapping.select_prev_item(),
      }),
      sources = cmp.config.sources({
        { name = "nvim_lsp" },
        { name = "buffer" },
        { name = "path" },
      }),
    })
  end,
},

四、neovide

这个相当于一个gui,主要作用是美化界面,用起来十分舒服

1. 下载

https://neovide.dev/

2. 把下载完成后的APPimage文件移动并重命名

bash 复制代码
先执行:

mkdir -p ~/.local/bin
mv ~/下载/neovide.AppImage ~/.local/bin/neovide
chmod +x ~/.local/bin/neovide

然后检查你的 PATH 里有没有 ~/.local/bin:

echo $PATH

如果输出里没有 /home/yzh/.local/bin,就把这一行加到 ~/.bashrc:

export PATH="$HOME/.local/bin:$PATH"

保存后执行:

source ~/.bashrc

再试:

which neovide
neovide

如果正常,就以后直接输入:

neovide

就能启动了。

3. 解决粘贴板问题

把下面这段加到你的 init.lua 里,最好放在最后面:

bash 复制代码
if vim.g.neovide then
  local paste = function()
    vim.api.nvim_paste(vim.fn.getreg("+"), true, -1)
  end

  -- Ctrl+Shift+V
  vim.keymap.set({ "n", "i", "c", "t" }, "<C-S-v>", paste, { noremap = true, silent = true })

  -- Shift+Insert
  vim.keymap.set({ "n", "i", "c", "t" }, "<S-Insert>", paste, { noremap = true, silent = true })
end

然后测试:

  1. 浏览器里复制一段文字
  2. 回到 Neovide
  3. Ctrl + Shift + V

正常就会直接粘贴文本,而不是出现 <S-Insert>

4. 放大缩小恢复默认界面大小

bash 复制代码
-- 初始缩放
vim.g.neovide_scale_factor = 1.0

-- 放大(Ctrl + +)
vim.keymap.set({ "n", "i" }, "<C-=>", function()
  vim.g.neovide_scale_factor = vim.g.neovide_scale_factor + 0.1
end)

-- 缩小(Ctrl + -)
vim.keymap.set({ "n", "i" }, "<C-->", function()
  vim.g.neovide_scale_factor = vim.g.neovide_scale_factor - 0.1
end)

-- 重置(Ctrl + 0)
vim.keymap.set({ "n", "i" }, "<C-0>", function()
  vim.g.neovide_scale_factor = 1.0
end)

之后就可以像vscode 一样, ctrl + + 放大, ctrl + - 缩小,, ctrl + 0 恢复到默认

相关推荐
习惯就好zz3 个月前
在 Ubuntu 18.04 (WSL) 上配置 LazyVim
linux·ubuntu·nvim·lazyvim·1804
翻滚吧键盘1 年前
vim操作简要记录
vim·vi·neovim·nvim
izwmain2 年前
vim翻页快捷键
linux·编辑器·vim·nvim·翻页·跳转行