环境:Ubuntu 20.04
宿主机:windows (windows terminal)WSL2
NVIM:v0.10.0-dev
配置Neovim 需要保证流畅的github环境(以便于快速拉取插件),可以使用代理或是配置Github SSH key
本篇博客是学习掘金小册的学习笔记,有兴趣的朋友可以直接点击下文链接了解详情
小册链接:Neovim 配置实战:从0到1打造自己的IDE - nshen - 掘金小册 (juejin.cn)
首先 init.lua 是整个配置的入口文件,负责引用所有其他的模块,基本上想要打开或关闭某个插件只要在这里修改一行代码即可。
basic.lua: 基础配置,是对默认配置的一个重置。
colorscheme.lua: 我们安装的主题皮肤配置,在这里切换主题。
keybindings.lua: 快捷键的设置,所有插件的快捷键也都会放在这里。
plugins.lua: 插件安装管理,插件安装或卸载全在这里设置。
lsp 文件夹:
是对 Neovim 内置 LSP 功能的配置,包括常见编程语言与语法提示等。
plugin-config 文件夹: 是对第三方插件的配置,未来每添加一个插件,这里就多一个配置文件。
utils 文件夹: 是对常见问题的修改,包括输入法切换,针对 windows 的特殊配置等。
官网:Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
下载字体文件下载之后双击ttf文件点击安装即可添加到系统字体文件中
配置步骤:
最后点击保存
旧版本卸载:
官网:Installing Neovim · neovim/neovim Wiki (github.com)
执行,确保版本必须为 0.7 及以上。
执行
执行重新加载配置文件
写入如下内容:
函数在 Lua 中用于加载一个模块,而这些模块通常位于 中的 目录下,也就是我们的 目录。
所以上边的代码,就是加载 文件(注意:require 里没有 扩展名)。当然也可以创建 目录,在目录下边创建 文件也是可以成功加载的。
创建基础配置文件,并添加如下内容:
一般来说,全部设置在 下也是可以的,例如 也是有效的,只是我们上边设置到了比较详细位置而已,具体每个变量的分类可以在 :help 文档中查看。
创建
最后在中引入快捷键文件
目前在 Neovim 最常见的插件管理器主要有 vim-plug 和 packer 两个。
安装步骤(请参照官网步骤):
执行
安装成功后添加配置文件,添加如下内容
中添加如下内容
配置生效后,Neovim 会增加以下命令。
通过上边的说明,我们观察到 命令包含了 和,而 又包含了 和 流程。
所以通常情况下,无论安装还是更新插件,我只需要下边这一条命令就够:
每次修改完 这个文件后,保存退出,重新打开并调用 就可以了
文件,在最后添加
注意:保证自己可以ping 通 github 的情况下,但是仍旧执行失败,按 R 多次拉取失败插件,如果依旧失败则在错误插件处点击回车,查看问题,具体问题具体分析,我一般多试几次 R 就会成功
中添加如下内容:
添加
文件
保存 退出
其他主体配色链接:neovim-colorscheme · GitHub Topics
添加插件配置后,修改 内 变量为相应的主题即可
相关插件:
中添加
上边代码就是 nvim-tree 的配置,可以根据注释进行修改。这里简单解释一下,值得注意的是 项,如果想要在 中用 Windows 系统默认设置打开文件,需要使用 全局安装一个 包,使用命令 ,如果不需要这个功能,也可以不用安装。 如果不是 Windows 系统也就不需要安装。
nvim-tree 初始化支持很多参数,如果想知道还有哪些其他的参数,可以运行 调出帮助文档查看。
添加
添加
但是出现问题,应该是某些插件更新:相关链接:Migrating To on_attach · nvim-tree/nvim-tree.lua Wiki (github.com)
表明 and 已经启用需要移除
解决方案:
注释掉
执行,复制中的内容粘贴到中(需要添加在setup之前)
添加
问题解决~
相关插件:
保存,自动安装,安装完整按 退出
出现GnuTLS recv error (-110)问题
解决方案:
这里我增加了一个 moll/vim-bbye 依赖,因为这个插件安装后会增加一个 命令,相比内置的 , 它删除 buffer 的同时,并不会搞乱布局 。 待会儿我们会配置 为关闭 Tab 的命令。
新建文件并添加内容
添加
新建
添加
相关插件:nvim-telescope/telescope.nvim: Find, Filter, Preview, Pick. All lua, all the time. (github.com)
检查依赖情况,这里通常会提示 不存在,因为 依赖以下两个项目。
解决方案:
配置源,需要哪个版本可以将16替换为相应版本
安装
如果不想要自己配置指定版本源的情况下,可以直接执行
官网:nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions (github.com)
git clone nvm仓库时遇到如下错误
GnuTLS recv error (-110): The TLS connection 。。。
我是因为Ipv6的问题,可以git clone -4 指定使用Ipv4连接
但是执行遇到问题:
Err:12 http://ppa.launchpad.net/x4121/ripgrep/ubuntu focal Release
404 Not Found [IP: 185.125.190.52 80]
Reading package lists...
E: The repository 'http://ppa.launchpad.net/x4121/ripgrep/ubuntu focal Release' does not have a Release file.
这是因为之前我执行过所以可以直接手动删除
解决方案(自动移除再更新):
手动删除
后面我在使用更新插件包时爆出:
解决1(失败):
解决2(成功):
我直接ping了下网络,发现不只是github连不上,而是整个WSL网络都不能使用,在宿主机中我查看WSL网络配置,发现未修复之前两个红框中的ip地址是没有的
直接在宿主机上使用管理员权限执行重启网络即可(注意:不需要重启)
下面解决方案没有试过,仅作为备用方案
解决3:
当我们在命令行中输入 不带任何路径并敲击回车的时候,就会打开这个界面,通常我们会在这个界面中配置最常用功能,比如打开最近编辑过的文件,快速打开项目文件夹,快速修改快捷键等。
使用官方配置的图像: Ascii Header Text · nvimdev/dashboard-nvim Wiki (github.com)
使用字体生成器:Text to ASCII Art Generator (TAAG) (patorjk.com)
同样 plugins.lua 中添加:
创建 lua/plugin-config/dashboard.lua ,并添加:
但是里面的 并不是 telescope 内置的命令。需要安装插件,执行如下步骤
添加插件
确保文件中有如下代码:
创建
执行
我得到了这个文件,直接编辑即可
添加
以后的话可以方便编写nvim项目配置 :)
相关插件:nvim-treesitter/nvim-treesitter: Nvim Treesitter configurations and abstraction layer (github.com)
添加插件
运行 命令查看 language parsers 列表与安装状态
安装::TSInstall javascript
卸载::TSUninstall javascript
安装后会在 packer 中生成相应语言的so文件
稍微说下里面 nvim-treesitter 中的配置
当你的光标在一个语法结点上时,可以设置一个增加键和一个减少键,敲击这两个,在表现上为不断外扩和收缩选中代码。
增加和减少结点的快捷键设置成了 回车 和 退格 。通过不断的按 Enter 选择区域会从里层不断外扩, Backspace 则相反不断内收。
在 visual 模式中按 = 即可实现代码缩进
快捷键中设置了 组合键来折叠 中的内容,还使用 组合键来打开对应的折叠。
执行查看是否成功
如果出现问题先执行看是否可以解决,无法解决查看官方issues或wiki
目的:实现类似IDE的智能提示、语法检查和解析、悬停文档等交互体验
定义:LSP(Language Server Protocol) 语言服务协议,该协议定义了在编辑器或IDE与语言服务器之间使用的协议,该语言服务器提供了例如自动补全,转到定义,查找所有引用等的功能;语言服务器索引格式的目标是支持在开发工具中进行丰富的代码导航或者一个无需本地源码副本的WebUI。
执行查看quick start,里面的步骤如下
安装插件:neovim/nvim-lspconfig: Quickstart configs for Nvim LSP (github.com)
安装插件:williamboman/nvim-lsp-installer: Further development has moved to https://github.com/williamboman/mason.nvim!
配置插件:
运行 ,点击 i 即可安装相应的 Server ,进入之后安装 Lua server
从最上面的介绍得知作者未来会用 mason.nvim 取代 nvim-lsp-installer,mason.nvim 项目支持更多的 server 安装,不仅仅是LSP Server 还支持 DAP servers、 linters、formatters 等等超过 150 个包,100+ 种编程语言,并且升级也是非常简单的
但是安装失败,直接重新安装即可成功
但是有时遇到 问题,可以使用如下命令
但是安装成功之后发现问题,我从issues中了解到是因为lua server的仓库地址发生变化
鉴于nvim-lsp-installer出现的各种问题,现在使用mason.nvim代替nvim-lsp-installer
步骤:
保存之后默认安装到 ~/.local/share/nvim/mason
执行即可打开,操作基本和上面的一样,只不过多了 1,2,3,4,5 是上边TAB快捷键,按 即可切换到 LSP
Mason 仓库地址:Mason
创建一个新的目录 专门存放 lsp 相关的配置,使用查看如何配置setup,或是直接看官网
创建
创建
这里记录下:使用:verbose map可以查看所有生效的快捷键
补全引擎
补全引擎就是为 Neovim 提供代码补全核心功能的插件,比如 nvim-cmp
补全源
补全源就是补全引擎需要的数据来源,最常见的来源是来自 Language Server 提供的数据,它会知道某个类有哪些属性和方法等。
snippet 引擎
snippet 引擎就是自定义代码段的引擎,常见的有 、 等
注意:只有 是补全引擎插件本身,其他 基本都是插件补全来源,也就是说当你输入一个变量的时候,可以从多个来源显示补全的内容。
像 hrsh7th/cmp-nvim-lsp 就是 Neovim 内置 LSP 提供的补全内容,hrsh7th/cmp-buffer 补全当前 buffer 的内容, hrsh7th/cmp-cmdline 是命令行的补全,hrsh7th/cmp-path 则是用来补全路径,如果配置了这个,当输入一个路径的时候会补全路径
创建
添加
UI 插件,同时 lspage还可以自定义快捷键,对于我自己而言我认为有些地方文字更加直观,如果有些朋友需要美化可自行查找
当一行代码很长的时候,右侧的提示文字就会显示不全
之前配置过 gp 快捷键使用弹窗显示错误,可以有效解决
创建
中的mapLSP 函数替换为
之前定义过格式化快捷键
但是你会发现格式化不起作用,这是因为使用的 Lua Language Server 并没有实现格式化功能。
格式化方案有如下两种:
这里只讲解第二种
安装之后可以运行查看绑定的Language Server
然后我们可以看到有两个 LSP 了,null-ls 作为通用 LSP,可以在任何 filetypes 中运行。
然后执行查看源的激活情况
之后的话即可使用命令或是直接使用快捷键进行格式化
但是我们会发现包如下错误,这是因为相应语言应该配置相应的Code Formatter,显示报错就是缺少Lua语言的StyLua,其它语言可以自行配置相应的Formatter
下面展示如何配置stylua
stylua 需要配置 rust 环境 ,rust官网:安装 Rust - Rust 程序设计语言 (rust-lang.org)
因为我是使用WSL,因此直接执行如下命令即可
执行
执行看是否成功,失败则看是否添加路径到环境变量中
执行
输出看是否成功
格式化之后里面的空格就都变成了"^I", 原本应该是“·”的
直接将文件中设置或是设置
执行
执行查看安装情况
创建
创建
创建
上面不禁用的话也是可以的,只不过会和默认的null-ls中的 prettier 格式化冲突,每次格式化都需要选择
注意html、css文件均是需要项目根目录有文件和prettier依赖
使用 emmet 可是使用简单的语法可以快速打出 HTML 结构标签
创建
修改
JSON Schema Store 插件,即JSON增强包
添加插件
新建
修改
添加TS增强包插件
创建
同样修改
添加快捷键
null-ls 中除了格式化 Formatting,还有Diagnostics(红字错误提示) 和 Code Actions(代码触发的行为)
修改为
code_actions.gitsigns 没有安装可以注释掉
使用调用 Code Action 自动修复快捷键
前文已安装rust环境,此处不赘述
中的ensure_installed中添加"rust"
或是执行
添加 Rust 增强包插件
安装相应 Formtter
source中添加
filetypes中添加
熟悉上面的流程,这个就简单讲了
相关插件:p00f/clangd_extensions.nvim: Clangd's off-spec features for neovim's LSP client. Use https://sr.ht/~p00f/clangd_extensions.nvim instead (github.com)
servers 添加 “c”和“cpp”
安装格式化插件:
相关插件:CRAG666/code_runner.nvim: Neovim plugin.The best code runner you could have, it is like the one in vscode but with super powers, it manages projects like in intellij but without being slow (github.com)
添加插件:
配置插件
之后init.lua中添加插件,最后添加快捷键,使用空格加即可运行代码
插件仓库:windwp/nvim-autopairs: autopairs for neovim written by lua (github.com)
引入插件
创建
插件仓库:numToStr/Comment.nvim: // Smart and powerful comment plugin for neovim. Supports treesitter, dot repeat, left-right/up-down motions, hooks, and more (github.com)
添加插件
创建
定义快捷键 gcc 快捷键作为行注释,gbc 快捷键作为块注释
中引入
引入插件
surround 官方快捷键如下
常用快捷键
我在推送仓库时频繁遇到
解决链接:git - GnuTLS recv error (-110)
直接运行这个脚本即可
之后推送遇到问题,虽然我不太清楚我配了SSH key,为什么还是走的密码验证,但是我还是按照他的提示来做获取,直接github首页中Setting->Developer settings->Personal access tokens 生成token
执行
最后即可免密推送
学习vim快捷键网站:Vim Cheat Sheet (rtorr.com)
使用查看复制粘贴命令
文档推荐使用,或是执行就可以连通vim剪切板和系统剪切板,但是这个命令只是暂时性的,只能当前页面生效,为了永久生效,可以在中添加
全选复制文件或是
只是删除而不将删除的部分复制到剪切板中(本质上是将剪切的内容放到_寄存器中,以便于和+寄存器区分)
对我自己而言,配置的这些功能虽然少,但是暂时够用,如果追求更多的功能,可以直接用小册作者的仓库,或是其他优秀仓库
其实我觉得其实作为个人使用来说,没有特殊需求的情况下不是很推荐自己配置,只需要看懂本篇博客,然后可以做到更改别人写好的配置即可
还有就是切忌盲目复制粘贴,一定要看官方文档
本篇博客示例配置仓库:ReturnTmp/rettmp-nvim
掘金小册作者仓库:https://github.com/nshen/learn-neovim-lua
注意:v2分支是neovim 8.0+适用
或是直接使用作者的新仓库:nshen/InsisVim: 🗃 An out-of-the-box Neovim IDE solution that setup development environment in an incredibly simple way. (github.com)
除了小册作者的配置仓库,这里再推荐一个优秀Neovim配置仓库:ayamir/nvimdots: A well configured and structured Neovim. (github.com)
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.xrbh.cn/tnews/4999.html