在 Github 冲浪的时候偶然间看到一个NeoVim的欢迎页面,效果看起来蛮好看的,就动手折腾了下,官方预览如下:
其实最感兴趣的其实是其中的每日宜忌,但是搜了下仓库没找到相关的说明,作者的Nvim配置文件也没找到,只找到了一个相关的问题:Hyper图片里的宜忌是怎么实现的 回答里有个兄弟提供了一种思路,就是通过 lua 调用其他语言的脚本,来动态获取每日宜忌,渲染到欢迎页面上,这里我用 Nodejs来实现了。
安装
首先下载安装nvimdev/dashboard-nvim 插件,这里因为我使用的是 LazyVim, 已经内置了 dashboard-nvim 插件,所以不需要再安装。如果你使用的是其他的插件管理器,可以参考官方文档进行安装。
配置
获取每日宜忌
这里使用了 lunar 这个库来获取每日宜忌,通过官方提供的 CDN 地址下载 lunar.js
文件。
创建 .config/nvim/scripts
目录,将下载的文件放在目录下,并新建 yiji.js
文件,内容如下:
LazyVim 配置
主题需要选择 hyper
,并且开启 week_header
,因为宜忌效果展示需要通过 week_header
的 concat
属性来实现,其他配置可以参考官方文档。
另外我这里还自定义了一些常用的 shortcut
等,具体的配置可以查看官方文档。
宜忌的实现主要通过下面这段代码实现, 通过 node -e
命令来执行 yiji.js
文件,获取到每日宜忌, 使用 lua 的 io.popen
来执行命令,获取到结果。
再通过 string.match
来匹配到 yi
的值,最后将值通过 week_header
的 concat
属性来渲染到页面上。
! node -e 或者 —eval 是一个命令行选项,它允许你在命令行中执行 JavaScript 代码。当你在命令行中使用 node -e 并跟随一些 JavaScript 代码时,Node.js 将立即执行该代码并退出。
node -e "console.log("Hello World")"
另外需要注意的是因为我这里是 Mac 系统,所以使用了 HOME
环境变量来获取到脚本目录,其他系统需要自己查询下环境变量的获取,或者直接写绝对路径。
完整的配置如下:
配置详情可以查看我的 dotfiles