最初是在腾讯云上写东西的时候觉得没有自动补全等ide的功能很麻烦,所以就看了一下相关的办法。然后就接触到了nvim,之后尝试了neovim-for-beginner从零开始,不过需要看的太多就放弃了,接着就想找可以开箱即用的,像nvim-basic-ide、Neovim-from-scratch,最后选中了AstroNvim,原因是安装这个的过程中问题最少,功能也不错,而且说明文档清晰靠谱。
一、安装
按照readme的步骤一般是不会有问题,我这里只列一下自己踩过的坑
1. git
云上的环境git很有可能连不上github或者经常断开,如果是连不上,有条件可以用vpn,没有的话就改一下hosts,网上有很多讲如何弄的。但假设网速依旧不理想,建议修改~/.config/nvim/lua/core/plugins.lua
中的下面两个配置
if status_ok then
packer.startup {
-- 其他逻辑
config = user_plugin_opts("plugins.packer", {
-- 其他逻辑
git = {
clone_timeout = 20, -- 1、这里减少超时时间
subcommands = {
update = "pull --rebase",
},
},
max_jobs = 2, -- 2、这里减少同时下载的数量
}),
}
end
我下载plugin的时候,就经常因为同时下载过多失败,每次都要等5分钟才能重试,虽然遇到失败直接退出也可以,但后面也可能会有成功的,所以我一般会等安装结束,改了配置之后重试下载plugin的效率会提升很多。
2. PackerSync
一般plugin下载失败可以不断重试,但如果一开始的时候Packer(也就是插件管理器)本身就失败了,那就没办法执行其他安装命令了,这时你在nvim内执行任何Packer的命令,应该都会提示Not found
,办法就是在~/.config/nvim
应该会有一个packer_compiled
的编译文件,删掉之后再重新执行,就可以了。
3. 字体和颜色
安装好所有的plugins之后,再打开一般就能看到readme中的界面了。先随便打开个文件,检查下字体和颜色,按Space + e
看下目录有没有问题之类的。如果出现个别icon不正常,那一般就是没有安装合适的Nerd Font,注意不是所有Nerd Font都可以的,我自己测试的话,mac上用Fira code Nerd Font
是可以的,windows是用Caskaydia Cove Nerd Font
是正常的。
如果出现任何的颜色或者布局问题,比如莫名其妙出现多余的空格或者色块、某些地方没有对齐之类的,都是客户端本身的问题,要换成其他的terminal。例如mac上不要用原生的terminal,要用iterm2
;windows上Windows Terminal
是可以的,但像我之前用的windterm就不行,网上说的检查echo $TERM
,这都是没必要的。
4. 其他依赖
虽然Requirements的东西不是都需要装,但ripgrep
和Node
这两个一定要装,不然搜索功能和语言支持的功能都可能不可用
5. 语言支持
假设不知道要安装什么的话,就用:Mason
命令打开看下,如果不知道语言对应哪些包,就用Ctrl + f
搜索一下,然后按i
进行安装,按键操作可以到这里找mason.nvim
二、使用
把lsp相关的插件都安装好后(可能需要重启),就可以"愉快"地写东西了,像是自动补全、跳转(gd
)、错误检查等等功能都是有的,其他ide的功能基本都是支持的,包括像是左右对照git的修改(Space + gd
)
1. 键位
为什么说是“愉快”呢?因为像我这样的新手有太多问题了,最大的问题应该就是按键,astro有提供基本键位的文档;但其他的按键,就要到对应的plugin的说明文档里去找对应的键位了,例如上面提到的mason.nvim
2. 配置
因为我也是刚开始用,还没有很详细地了解,目前只改了下面这个配置
-- ~/.config/nvim/lua/configs/neo-tree.lua
close_if_last_window = false, -- 原本是true,会在关闭当前tab的时候退出,强烈建议改掉
但以后不知道还有多少地方需要手动去改配置,又不懂lua,真的心累。。
三、体验
刚开始把astro搭起来的时候很兴奋,不仅在云上装完,还在mac和windows上都装了,想着以后就用它了。但是呢,毕竟已经适应了主流的ide,直接转到vim的体系还是挺不容易的,很多操作习惯也很难短时间改变,在日常使用的话难免拖慢进度还会分心,所以对我来说目前最适合的场景还是云上,日常还是用旧的,这样最初的目标也算达到了,云上的编程环境至少比之前好多了。