neovim初上手
2024年5月1日 2024年5月2日
macOS
题外话 -
github个人博客的域名也是(.io),很Geek,对吧?
但这个域名的全称是 British Indian Ocean Territory
,即英属印度洋领地。
编辑器圣战
Emacs - 神之编辑器
Vim - 编辑器之神
要知道Emacs的插件都是用elisp写的,而neovim的插件可以用lua写。
我在Emacs中使用use-package进行插件管理,本文会介绍nvim.lazy,于neovim中承担对应职能。
官方教程
neovim常用命令
大家学vim的时候都有接触tutor吧,neovim中的tutor和那个类似。
:h Tutor
lua-guide
该学习文档我只提一点,其将 init.lua
放在了 ~/.config/nvim/lua/other_modules/
目录下,用意我不知。如果使用这种方式无法自动加载init.lua,那就还是放到根目录吧。
:h lua-guide
默认配置文件
本文所有配置适用于macOS
根目录: ~/.config/nvim
neovim支持两种配置文件类型,(.vim)和(.lua)。之前就见过别人诟病vim的配置难以拎清。我已经上手emacs,配置文件也从(.el)升级到(.org)。直接上手neovim也有这方面的考虑。
注意:neovim默认加载根目录下的init.vim或init.lua。
插件管理器
拿
nvim-tree/Installation
的安装举例,github文档中提到了三种插件管理器
-
vim-plug
vim插件管理器(我没用过) -
packer.vim
最后一次更新于2023年8月25日,也就是令人遗憾的断更了使用lua编写
-
lazy.nvim
接下来会介绍的插件管理器和emacs有spacemacs以及doo emacs一样,neovim有 LazyVim 和 NvChad 。
lazy.nvim只是插件管理器,并且是LazyVim的御用插件管理器。
安装lazy.nvim
-
为了验证安装成功,实验性地将安装脚本写在init.lua中
如果出现报错,考虑一个可能的原因,neovim无法访问github
1-- 预加载 2local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 3if not (vim.uv or vim.loop).fs_stat(lazypath) then 4 vim.fn.system({ 5 "git", 6 "clone", 7 "--filter=blob:none", 8 "https://github.com/folke/lazy.nvim.git", 9 "--branch=stable", -- latest stable release 10 lazypath, 11 }) 12end 13vim.opt.rtp:prepend(lazypath) 14 15-- 引用lazy.nvim,但不进行任何安装 16require("lazy").setup({})
另外,lazy.nvim将插件下载到
~/.local/share/nvim/lazy/
目录下,视情况做相应处理 -
验证安装成功
:checkhealth lazy
或者
:Lazy
安装nvim-tree
-
同样地,将脚本写在init.lua中
作者提供的安装脚本如下:
1return { 2 "nvim-tree/nvim-tree.lua", 3 version = "*", 4 lazy = false, 5 dependencies = { 6 "nvim-tree/nvim-web-devicons", 7 }, 8 config = function() 9 require("nvim-tree").setup {} 10 end, 11}
用于一个插件对应一个lua文件
我们则需将返回值存到局部变量,并使用lazy.nvim安装
1local nvim_tree_plugin = { 2 "nvim-tree/nvim-tree.lua", 3 version = "*", 4 dependencies = {"nvim-tree/nvim-web-devicons"}, 5 config = function() 6 require("nvim-tree").setup {} 7 end 8} 9 10-- 使用lazynvim安装 11require("lazy").setup({nvim_tree_plugin})
-
nvim-tree使用了很多符号,需安装配套字体
Nerd Fonts -
打开文件树
:NvimTreeOpen
整理配置文件
-
默认配置文件负责主控
~/.config/nvim/init.lua
-
将其他lua代码放在lua文件夹
~/.config/nvim/lua/
-
插件管理器放在lua目录下
~/.config/nvim/lua/lazynvim-init.lua
-
其他插件归整到plugins目录下
~/.config/nvim/lua/plugins/
默认配置文件
~/.config/nvim/init.lua
引用lazy.nvim插件
1require("lazynvim-init")
插件管理器
~/.config/nvim/lua/lazynvim-init.lua
1-- 预加载 2local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 3if not (vim.uv or vim.loop).fs_stat(lazypath) then 4 vim.fn.system({ 5 "git", 6 "clone", 7 "--filter=blob:none", 8 "https://github.com/folke/lazy.nvim.git", 9 "--branch=stable", -- latest stable release 10 lazypath, 11 }) 12end 13vim.opt.rtp:prepend(lazypath) 14 15-- 使用lazynvim安装plugins目录下所有插件 16require("lazy").setup("plugins")
nvim-tree插件
~/.config/nvim/lua/plugins/plugin-nvim-tree.lua
1return { 2 "nvim-tree/nvim-tree.lua", 3 version = "*", 4 lazy = false, 5 dependencies = { 6 "nvim-tree/nvim-web-devicons", 7 }, 8 config = function() 9 require("nvim-tree").setup {} 10 end, 11}
查看nvim版本
:!nvim --version