NeoVim 安装

NeoVim 官网

安装

  • macOS

    brew install neovim
    
  • Windows

    • 使用 winget

      winget install Neovim.Neovim
      
    • 也可以使用 scoop

      scoop install neovim
      
  • Ubuntu

    • 通过包管理器(版本较旧,可能无法安装后面的 LazyVim 插件):

      sudo apt install neovim
      
    • 或者手动安装二进制包:

      curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
      sudo rm -rf /opt/nvim
      sudo tar -xzf nvim-linux64.tar.gz -C /opt
      rm nvim-linux64.tar.gz
      

      将下面这行加入 ~/.bashrc~/.zshrc

      export PATH="/opt/nvim-linux64/bin:$PATH"
      

参考:neovim/INSTALL.md | GitHub

使用

nvim <your_file>

<your_file> 替换为你要打开的文件名

LazyVim

刚安装的 NeoVim 看起来和传统 Vim 并无两样。我们可以安装 LazyVim 插件来美化我们的 NeoVim。

安装

在安裝前确保你的系统已经安装了 GCC 或 Clang 等 C 编译器。对于 Windows 上 GCC 的安装,参见安装 MinGW-w64

  • Linux / macOS:

    git clone https://github.com/LazyVim/starter ~/.config/nvim
    
  • Windows:

    git clone https://github.com/LazyVim/starter $env:LOCALAPPDATA\nvim
    

配置

~/.config/nvim/lua/config/options.lua 文件下可以进行一些个性化设置:

vim.opt.expandtab = true -- 使用空格代替 Tab
vim.opt.tabstop = 4      -- Tab键的宽度
vim.opt.shiftwidth = 4   -- 缩进时的宽度
vim.opt.softtabstop = 4  -- 按退格键时可以删除的空格数量
vim.g.lazyvim_plugin_notifications = false -- 禁用插件通知

设置 Tab 键为自动补全按键

创建 ~/.config/nvim/lua/plugins/autocompleate.lua

return {
  -- Use <tab> for completion and snippets (supertab)
  -- first: disable default <tab> and <s-tab> behavior in LuaSnip
  {
    "L3MON4D3/LuaSnip",
    keys = function()
      return {}
    end,
  },
  -- then: setup supertab in cmp
  {
    "hrsh7th/nvim-cmp",
    dependencies = {
      "hrsh7th/cmp-emoji",
    },
    ---@param opts cmp.ConfigSchema
    opts = function(_, opts)
      local has_words_before = function()
        unpack = unpack or table.unpack
        local line, col = unpack(vim.api.nvim_win_get_cursor(0))
        return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
      end

      local luasnip = require("luasnip")
      local cmp = require("cmp")

      opts.mapping = vim.tbl_extend("force", opts.mapping, {
        ["<CR>"] = cmp.config.disable,
        ["<Tab>"] = cmp.mapping.confirm({ select = true }),
        ["<C-j>"] = cmp.mapping(function(fallback) end, { "i", "s" }),
      })
    end,
  },
}

参考:HELP, How do I Auto complete with <TAB> in LazyVim? | Reddit

posted @ 2024-03-08 17:52  Undefined443  阅读(190)  评论(0编辑  收藏  举报