基于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吧!

相关推荐
m0_519523107 小时前
Linux——简单认识vim、gcc以及make/Makefile
linux·运维·vim
Daorigin_com8 小时前
如何从数字化迈向智能化的跨越,重塑企业合同管理的未来
搜索引擎·计算机视觉·数据挖掘·vim·信号处理·sklearn·测试覆盖率
fll9802059 小时前
配置修改Vim编辑器中TAB键的缩进长度
linux·编辑器·vim
励志成为嵌入式工程师19 小时前
c语言归并排序
c语言·算法·vim·排序算法
fchyang21 小时前
远程终端vim里使用系统剪切板
linux·编辑器·vim
前端青山2 天前
Node.js 全栈开发进阶篇
linux·开发语言·前端·node.js·编辑器·vim
qq_441996052 天前
JDK 安装、环境变量配置、nano 和 vim 的使用
java·开发语言·vim
我是哈哈hh2 天前
Linux环境基础开发工具的使用_yum源_vim_Git控制器
linux·运维·c++·git·vim·1024程序员节
little redcap2 天前
xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法
linux·编辑器·vim
Tranquil_ovo2 天前
【Linux】【Vim】多文件编辑与分屏
linux·vim