Pensieve: 2107
2021-07-23 19:05
所观所读所听所玩
这个月加了不少音乐:
- Stacey Kent的Breakfast on the Morning Tram, 这张专辑一年前因为版权原因从Apple Music里消失了, 最近想起里面的What a wonderful world, 搜索的时候发现又回来了. 摇头叹气, 版权导致的使用体验下降真是令人不快.
- 莫文蔚的The Voyage, 一张粤语专辑, 里面的妇女新知 2021挺有意思.
- Joshua Hyslop的Have youself a merry Christmas.
- 中岛美嘉的PORTRAIT - Piano & Voice, 主要是为了里面那首一了百了.
在Netflix上看了一个巴乔的纪录片(Baggio: The divine ponytail). 很是可惜, 如果没有这几次受伤, 拿到一两个世界冠军还是很有可能的. 的确, 人们喜欢巴乔是因为他是不完美的, 更近人一些.
去旅游的时候重温了一遍七龙珠, 最精彩的还是弗利萨和沙鲁那段, 后面的魔人布欧让人失望. 不过这次看我开始羡慕界王的生活状态. 生活在一个小星球上, 睡到自然醒, 不用做什么辛苦的工作, 与世无争地活着, 多好.
大概花了几十个小时在玩Minecraft dungeons这个游戏, 没怎么特别享受. 人物没有任何技能, 所有的技能都是武器自带的. 武器的特效说来说去也就那么多, 越往后玩就越来越变成一个数值的游戏. 在找来视频刷了一遍隐藏的牛关后就放弃了. 现在有点庆幸自己没花更多钱去买DLC. 开始发愁这次PlayStation打折要买什么.
这个月趁着娃放假去Mornington半岛旅游了一次. 说是旅游, 实际上住的地方离家开车也就一个半小时. 算是带着娃休闲了一把. 风景是还好, 不过也没什么特别的.
init.lua
这个月neovim发布了0.5.0版, 这个大版本更新添加了很多令人兴奋的新特性. 具有高亮地位的自然是lua支持. 现在neovim里面原生支持lua脚本, 而且可以用lua来编写配置文件. 趁着换工作的空档就折腾了下, 把自己之前的vi主配置文件切换到了lua. 完成后的代码在这儿. 下面说一下中间做了哪些事情.
首先是插件管理器, 我参照大多数lua党的做法, 使用了packer. 谈不上特别的好处, 一个插件管理器而已, 相对于之前用的Plug, 似乎优点只是能够管理自己, 不过我觉得这个不太有所谓. 接下来是使用的插件们, 几天折腾下来, 能够保留下来的插件有:
bling/vim-airline
chriskempson/tomorrow-theme
ekalinin/Dockerfile.vim
fatih/vim-go
hynek/vim-python-pep8-indent
numirias/semshi
rhysd/vim-gfm-syntax
vim-airline/vim-airline-themes
vim-scripts/restore_view.vim
其余的:
airblade/vim-gitgutter
: 被lewis6991/gitsigns.nvim
替代.psf/black
: 被mhartington/formatter.nvim
替代.davidhalter/jedi-vim
: 被hrsh7th/nvim-compe
和lsp替代.ervandew/supertab
: 被hrsh7th/nvim-compe
替代.hail2u/vim-css3-syntax
: 弃用, 不写css了.jiangmiao/auto-pairs
: 被windwp/nvim-autopairs
替代.roxma/nvim-yarp
: 弃用, 配置后就没用过.SirVer/ultisnips
: 被L3MON4D3/LuaSnip
替代.tpope/vim-haml
: 弃用, 没用过.tpope/vim-surround
: 弃用, 没形成肌肉记忆.vim-ruby/vim-ruby
: 弃用, 不写rb了.
配置的时候走了一点弯路, 后面平心静气地思考怎么一步一步配就好了. 我这儿说的是怎么用Tab键来补全一切内容的事儿: 我一开始就加上了neovim/nvim-lspconfig
和hrsh7th/nvim-compe
这两个插件, 试用了一下感觉不错, 就开始迁移其他的插件. 不过和compe冲突的插件实在不少, 除了auto-pairs这样的东西, 默认的ultisnips
也会占用Tab键, 更别提我一开始就放弃了的supertab了. 后来我删除掉了所有这些可能造成冲突的插件, 然后一个接一个地引入到配置文件中来, 每加入一个插件就充分测试, 保证前面的功能都正常(如果不正常就解决), 折腾了几个小时也就搞完了. 最后结果还算满意.
接下来是将自己常用的几个vim函数用lua重写, 这个也还比较容易, 这几个函数有两个大的功能, 我也就放在了两个文件里面, 一个是负责行号的显示, 在I模式下我希望能够显示绝对行号, 而在N模式下我希望能显示相对行号(方便复制粘贴和删除). 另外, 有一个印在我肌肉里的快捷键能够切换这些行号的显示. 另一个是模版的功能, 对于某些文件类型, 新创建的文件应该有一些行. 比如对于一个新的bash脚本, 我希望它的头部类似:
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
具体逻辑比较简单, 我也就不提了. 总体来说, 这次重写方便了后续的维护, 毕竟VimL不是一个好的编程语言.
对于init.lua, 我主要的槽点是一些API实在不好看, 比如做键映射的api, 另外, 还有些api根本没有lua的接口, 比如autocmd现在就只能调vim.cmd
来搞. 没啥, 等neovim 0.6吧. 迁移的过程中也发现一些新插件比较好用, 比如luasnip能够用lua来定义snippets, 又比如formatter能够用一个插件和vim命令(快捷键)来调用外部命令实现对文件的重排版. 另外就是之前发现的semshi里的f-string显示异常的bug终于有一点进展了, 虽然没有完全修好, 但是至少有PR了.
另外列一下我在研究过程中参考过的文档们:
- https://elianiva.my.id/post/neovim-lua-statusline
- https://oroques.dev/notes/neovim-init/
- https://www.chrisatmachine.com/Neovim/28-neovim-lua-development/
- https://alpha2phi.medium.com/neovim-init-lua-e80f4f136030
- https://www.imaginaryrobots.net/2021/04/17/converting-vimrc-to-lua
- https://neovim.discourse.group/t/the-300-line-init-lua-challenge/227
- https://teukka.tech/luanvim.html
- https://github.com/rafamadriz/friendly-snippets
面包机
上次说到家里买了一个松下的面包机. 拿回来后试做过有六七次了, 基本还满意, 不过因为家里发酵粉的缘故, 每次面包刚出锅的时候热腾腾地很软, 但是稍凉一些以后就变得很硬了. 查了下貌似是保存的时候应该封口和注意保温, 避免淀粉变性. 不过总体来说还是挺满意的, 热面包很好吃.