1.前言
自从Neovim和Vim分道扬镳之后,Neovim开始原生支持Lua语言并内置了LSP Client,使用体验变的超级棒!本文目的是记录和分享一个基于neovim
的PDE(Personal Development Environment)环境,这个配置几乎可以开箱即用,可作为程序员的成产力工具。
2. 安装
首先你需要安装Neovim到你的操作系统上,建议nvim版本在0.7以上。安装neovim
的方式很多,可以用os自带的包管理器安装,也可以直接下载对应平台的二进制,例如:
bash
# Download nvim-linux64.tar.gz
wget https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz
# Extract to system directory
sudo tar xf -C nvim-linux64.tar.gz -C /usr/share/
# Add to $PATH
echo PATH=/usr/share/nvim-linux64/bin:$PATH >> ~/.bashrc
source ~/.bashrc
# Check nvim version
nvim --version
NVIM v0.10.0-dev-2278+g35ffe58ea
Build type: RelWithDebInfo
LuaJIT 2.1.1707061634
Run "nvim -V1 -v" for more info
安装好nvim之后,建议先安装一下gcc
,go
, nodejs
, rustc
等开发语言编译工具链和运行环境。
bash
sudo dnf install -y gcc go nodejs
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
另外需要安装一下github cli即github的命令行工具,Mason.nvim这个LSP Server管理器默认会用到它。
bash
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo -y https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install -y gh
接着还需安装一些文件查找辅助工具,例如fd-find,fzf和ripgrep等。
bash
sudo dnf install -y fd-find fzf ripgrep -y
最后git clone这个github仓库到本地的./config/nvim
目录下即可:
bash
mkdir ~/.config
git clone https://github.com/fangying/nvim.git ~/.config/nvim
克隆到本地之后,直接执行nvim命令,nvim会自动开始执行以下几个步骤来完成初始化。
- 自动调用curl下载Packer.nvim插件管理器;
- Packer插件管理器自动下载lua/plugins.lua中配置的插件;
- Packer插件管理器自动编译生成最终的配置文件。
注意:
- 下载安装nvim插件可能会失败,强烈建议挂上梯子,可能需要多次执行
PackerSync
命令才能完成初始化。 Tree-sitter
这个插件安装和初始化可能时间会久一点,原因是它会编译和安装一堆语言相关组件。- 初始化遇到问题不要慌,根据
nvim
提示仔细排查一般都能够顺利解决。 - 初始化完成后,建议执行
checkhealth
命令,再次检查各插件的依赖是否都安装好了,通常建议安装好nodejs
、pynvim
等可能用到的辅助工具。
3. 私人定制
这个仓库基于github.com/ofseed/nvim...进行了一些优化,这是一个非常个性化的配置,可能需要根据个人习惯做一些修改。下面简要介绍一下这个超级配置里的一些核心插件。
alpha-nvim
这个漂亮的启动界面是alpha-nvim插件提供的,你可以对该插件进行定制。
telescope.nvim
Telescope.nvim
是一个超级插件,它可以为我们提供查找、过滤、预览、选择等功能。其本身还可以集成许多子插件,进一步可以实现项目管理、会话管理等功能。Telescope
的默认快捷键配置为:
bash
<leader>ff 查找文件
<leader>fg 查找符号
<leader>fp 查找项目
<leader>fs 查找代码片段
Tree-Sitter
Tree-sitter
是一个语法增量解析器,基于它我们可以实现对代码的语法分析,做到更细粒度的代码高亮。此外它还可以跟LSP进行交互,提供更加丰富的功能。
Mason.nvim
Mason
是一个非常好用的LSP Server
管理器,使用Mason
我们可以非常方便地下载各种语言的LSP Server
,有了它之后再也不用挨个去下载和安装LSP Server
。目前常用的编程语言LSP Server
在Mason
中都有了完备的支持。
CodeCompletion
CodeCompletion
是一个代码自动补充工具,是IDE
必不可少的功能。
有了LSP Server
的支持再加上Neovim
自带LSP Client
,Neovim
拥有媲美VsCode
般的代码补全和提示功能。
bash
#常用功能键,默认leader键是空格键。
<leader>gs # 全局符号搜索
<leader>gr # 查抄符号引用
<leader>rn # 符号重命名
4. 扩展
如果需要进一步对上述配置进行扩展,可以阅读一下该配置的核心代码。
- lua/plugins.lua 文件中定义了所有用到的插件集合;
- core文件夹是一些核心插件的独立配置项,可自行扩展;
- edit文件夹是一些代码编辑相关插件配置项,可自行扩展;
- efficiency文件夹是一些效率相关插件的配置项,可自行扩展;
- language是一些LSP Server相关的配置项,可自行扩展;
插件配置的入口文件是lua/plugins.la
,每个插件可以拥有自己的个性化配置,这些安装插件根据类型分类放到了不同的目录下面,可以根据自己的个性化需求调整部分插件的配置。
5. 结束
感谢Yi Ming的分享!
亲,还在等什么?
赶紧开始捣鼓打造属于你自己的Neovim
全功能PDE吧!