基于neovim打造属于自己的PDE

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之后,建议先安装一下gccgo, 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会自动开始执行以下几个步骤来完成初始化。

  1. 自动调用curl下载Packer.nvim插件管理器;
  2. Packer插件管理器自动下载lua/plugins.lua中配置的插件;
  3. Packer插件管理器自动编译生成最终的配置文件。

注意

  • 下载安装nvim插件可能会失败,强烈建议挂上梯子,可能需要多次执行PackerSync命令才能完成初始化。
  • Tree-sitter这个插件安装和初始化可能时间会久一点,原因是它会编译和安装一堆语言相关组件。
  • 初始化遇到问题不要慌,根据nvim提示仔细排查一般都能够顺利解决。
  • 初始化完成后,建议执行checkhealth命令,再次检查各插件的依赖是否都安装好了,通常建议安装好nodejspynvim等可能用到的辅助工具。

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 ServerMason中都有了完备的支持。

CodeCompletion

CodeCompletion是一个代码自动补充工具,是IDE必不可少的功能。

有了LSP Server的支持再加上Neovim自带LSP ClientNeovim拥有媲美VsCode般的代码补全和提示功能。

bash 复制代码
#常用功能键,默认leader键是空格键。
<leader>gs # 全局符号搜索
<leader>gr # 查抄符号引用
<leader>rn # 符号重命名

4. 扩展

如果需要进一步对上述配置进行扩展,可以阅读一下该配置的核心代码。

  1. lua/plugins.lua 文件中定义了所有用到的插件集合;
  2. core文件夹是一些核心插件的独立配置项,可自行扩展;
  3. edit文件夹是一些代码编辑相关插件配置项,可自行扩展;
  4. efficiency文件夹是一些效率相关插件的配置项,可自行扩展;
  5. language是一些LSP Server相关的配置项,可自行扩展;

插件配置的入口文件是lua/plugins.la,每个插件可以拥有自己的个性化配置,这些安装插件根据类型分类放到了不同的目录下面,可以根据自己的个性化需求调整部分插件的配置。

5. 结束

感谢Yi Ming的分享!

亲,还在等什么?

赶紧开始捣鼓打造属于你自己的Neovim全功能PDE吧!

相关推荐
小羊在奋斗18 分钟前
【Linux】包管理器、vim详解及简单配置
linux·运维·vim
xflm10 小时前
vim(1) -- 环境配置
vim
三玖诶3 天前
Linux中的 `vi` 与 `vim` 使用详解
linux·vim·vi
佚明zj4 天前
VIM的使用总结
linux·编辑器·vim
winkee4 天前
lazy.nvim 和 LazyVim 入口函数简单分析
vim
winkee4 天前
使用 neoconf 来管理项目 lsp 配置
vim
简佐义的博客5 天前
生物信息常用编辑器:轻量/强大/可定制/跨平台支持的编辑器之神 - vim
linux·编辑器·vim
第六五5 天前
VIM简要介绍
linux·编辑器·vim
fqbqrr5 天前
2409vim,vim写文件有问题
vim
小狗爱世界5 天前
vim/vi常用命令大全
linux·编辑器·vim