neovim的配置
...
neovim的配置
安装
# 安装稳定版
sudo pacman -S neovim
# 开发版(AUR)
yay -S neovim-git这里直接安装aur版本。之后去~/.bashrc里把它设为默认编辑器:
export EDITOR=nvim重启终端生效。
自定义
参考视频:[【全程讲解】Neovim从零配置成属于你的个人编辑器](【【全程讲解】Neovim从零配置成属于你的个人编辑器】 https://www.bilibili.com/video/BV1Td4y1578E/?share_source=copy_web&vd_source=bcabef2d36e72fa6da11e2aca69bb65f)
neovim可以使用模块化配置,把不同的功能放在不同文件夹里:
📁nvim
├─ 📁lua
│ └─ 📁core
│ └─ 📄options.lua
└─ 📄init.lua无论写了什么配置,要让nvim识别,需要在init.lua中引入,注意引入时把lua文件夹作为根目录,不加后缀名:
require("core.options")后续每在lua目录下添加一个配置文件,就要在这里require注册一下才能自动生效。
建议的配置
xclip
默认状态写用nvim复制粘贴,会显示找不到剪贴板。所以手动安装一个支持:
yay -S xclip注意这是X11桌面(dwm)的安装方式,如果是wayland系列用wl-clipboard。
基础配置(core/options.lua)
loacal opt = vim.opt
-- 使用相对行号
opt.relativenumber = true
opt.number = true
-- 缩进配置
opt.tabstop = 2
opt.shiftwidth = 2
opt.expandtab = true
opt.autoindent = true
-- 避免包裹
opt.wrap = false
-- 光标行高亮
opt.cursorline = true
-- 允许鼠标
opt.mouse:append("a")
-- 与系统剪贴板交互
opt.clipboard:append("unnamedplus")
-- 使用真彩并添加空列(为了后续添加主题预备)
opt.termguicolors = true
opt.signcolumn = "yes"键位(core/keymap.lua)
-- 主键设为空格
vim.g.mapleader = " "
local keymap = vim.keymap
-- 使用jk而不是esc退出插入模式
keymap.set("i", "jk", "<ESC>")
-- v模式下使用Shift+JK移动代码块
keymap.set("v", "J", ":m '>+1<CR>gv=gv")
keymap.set("v", "K", ":m '<-2<CR>gv=gv")
-- 空格+nh取消搜索后的高亮
keymap.set("n", "<leader>nh", ":nohl<CR>")插件管理
这一步没有参考视频中使用的packer,而是使用lazy.nvim。它会大大降低配置这个管理器的时间成本。
这部分参考:lazy-nvim插件管理器基础入门
📁nvim
├─ 📁lua
│ └─ 📁core
│ ├─ 📁plugins
│ │ └─ 📄plugins-setup.lua
│ ├─ 📄keymaps.lua
│ └─ 📄options.lua
└─ 📄init.lua在plugins-setup.lua中写入:
-- 1. 准备lazy.nvim模块(存在性检测)
-- stdpath("data")
-- macOS/Linux: ~/.local/share/nvim
-- Windows: ~/AppData/Local/nvim-data
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
--
-- 2. 将 lazypath 设置为运行时路径
-- rtp(runtime path)
-- nvim进行路径搜索的时候,除已有的路径,还会从prepend的路径中查找
-- 否则,下面 require("lazy") 是找不到的
vim.opt.rtp:prepend(lazypath)
-- 3. 加载lazy.nvim模块
require("lazy").setup({})