因为在维护 SpaceVim 这一项目,虽然我自己目前日常使用 neovim-0.9.5,但是还有不少用户会使用 neovim-nightly 版本。 因此,升级至每日构建版本测试 SpaceVim。
Windows 下升级也比较简单,使用 scoop 命令即可:
scoop uninstall neovim
scoop install neovim-nightly
安装后,启动一堆错误,也做了一部分修复,commits 如下:
* 2ad0da42 - perf(treesitter): add default setup function (Eric Wong 49 minutes ago)
* f8b280e0 - fix(flygrep): remove `t_ve` option (Eric Wong 68 minutes ago)
* c46968d5 - fix(colorscheme): link WinSeparator to VertSplit (Eric Wong 79 minutes ago)
* 9ee8606e - fix(telescope): fix deoplete autocmd (Eric Wong 82 minutes ago)
* 74c93c6c - chore(treesitter): update nvim-treesitter to 0.9.1 for Nvim-0.8.x (Eric Wong 2 hours ago)
vim.o.v_te
报错原先,在我的代码里有很多通过设置 &v_te
选项来实现修改光标的造型。但是升级到新版本后,就报如下错误:
Error detected while processing function SpaceVim#plugins#flygrep#open:
line 1:
E5108: Error executing lua C:\Users\wsdjeg\.SpaceVim\/lua/spacevim/plugin/flygrep.lua:780: Unknown option 't_ve'
stack traceback:
[C]: in function '__index'
C:\Users\wsdjeg\.SpaceVim\/lua/spacevim/plugin/flygrep.lua:780: in function 'open'
[string ":lua"]:1: in main chunk
检查了下源码,原来是因为执行了 vim.o.v_te
,尝试做了一些测试,增加exists()
判断,可恨的是 exists('&t_ve')
居然返回 1。
那么就无法判断了,只能是删除这些设置。
VertSplit
失效更新后,分割窗口的竖线没有高亮了。查了下 :hi VertSplit
,输出结果显示高亮设置正常。看了 :h hl-VertSplit
才知道,原来分割窗口的高亮组名称修改了。
修改成了 WinSeparator
。因此在 ColorScheme 的 autocmd 内增加了:
hi link WinSeparator VertSplit
treesitter
高亮报错这是我遇到最无语的错误。每当打开 lua 文件、help 文件 就会弹出报错 treesitter parser 不存在。起初我以为是 nvim-treesitter 的问题,更新并增加配置禁用所有的高亮都不行。
报错如下:
Error detected while processing function startify#open_buffers[13]..<SNR>276_open_buffer[12]..BufReadPost Autocommands for "*":
Error executing lua callback: ...s\neovim-nightly\current\share\nvim\runtime\filetype.lua:30: Error executing lua: ...s\neovim-nightly\current\share\nvim\runtime\filetype.lua:31: function startify#open_buffers[13]..<SNR>276_open_buffer[12]..BufReadPost Autocommands for "*"..FileType Autocommands for "*"..function <SNR>1_LoadFTPlugin[20]..script D:\Scoop\apps\neovim-nightly\current\share\nvim\runtime\ftplugin\lua.lua: Vim(runtime):E5113: Error while calling lua chunk: ...rrent\share\nvim\runtime/lua/vim/treesitter/language.lua:104: no parser for 'lua' language, see :help treesitter-parsers
stack traceback:
[C]: in function 'error'
...rrent\share\nvim\runtime/lua/vim/treesitter/language.lua:104: in function 'add'
...t\share\nvim\runtime/lua/vim/treesitter/languagetree.lua:112: in function 'new'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:41: in function '_create_parser'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:108: in function 'get_parser'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:416: in function 'start'
...ovim-nightly\current\share\nvim\runtime\ftplugin\lua.lua:2: in main chunk
执行 :help treesitter-parsers
同样报错,理解为打开 help 文件也报错,同只执行 :h
。
Error detected while processing modelines[274]..FileType Autocommands for "*"..function <SNR>1_LoadFTPlugin[20]..script D:\Scoop\apps\neovim-nightly\current\share\nvim\runtime\ftplugin\help.lua:
E5113: Error while calling lua chunk: ...rrent\share\nvim\runtime/lua/vim/treesitter/language.lua:104: no parser for 'vimdoc' language, see :help treesitter-parsers
stack traceback:
[C]: in function 'error'
...rrent\share\nvim\runtime/lua/vim/treesitter/language.lua:104: in function 'add'
...t\share\nvim\runtime/lua/vim/treesitter/languagetree.lua:112: in function 'new'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:41: in function '_create_parser'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:108: in function 'get_parser'
...ightly\current\share\nvim\runtime/lua/vim/treesitter.lua:416: in function 'start'
...vim-nightly\current\share\nvim\runtime\ftplugin\help.lua:2: in main chunk
于是,禁用 SpaceVim 的 treesitter 模块,任然报错。查看了 neovim-nightly 的源码,发现,原来在这几个文件里面默认增加了:vim.treesitter.start()
D:\Scoop\apps\neovim-nightly\current\share\nvim\runtime\ftplugin\help.lua
D:/Scoop/apps/neovim-nightly/0.10.0-2559/share/nvim/runtime/ftplugin/lua.lua
执行 cat D:/Scoop/apps/neovim-nightly/0.10.0-2559/share/nvim/runtime/ftplugin/lua.lua
, 发现就两行代码,也没有任何条件判断跟 error handle。
-- use treesitter over syntax
vim.treesitter.start()
说实话,没空去这样试错。
scoop uninstall neovim-nightly
scoop install neovim
nvim --version
NVIM v0.9.5
Build type: RelWithDebInfo
LuaJIT 2.1.1703942320
Compilation: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe /MD /Zi /O2 /Ob1 -W3 -wd4311 -wd4146 -DUNIT_TESTING -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_WIN32_WINNT=0x0602 -DMSWIN -DINCLUDE_GENERATED_DECLARATIONS -ID:/a/neovim/neovim/.deps/usr/include/luajit-2.1 -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/build/src/nvim/auto -ID:/a/neovim/neovim/build/include -ID:/a/neovim/neovim/build/cmake.config -ID:/a/neovim/neovim/src -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include -ID:/a/neovim/neovim/.deps/usr/include
system vimrc file: "$VIM\sysinit.vim"
fall-back for $VIM: "C:/Program Files (x86)/nvim/share/nvim"
Run :checkhealth for more info
今天在 wsl 内将 ~/.SpaceVim
仓库的远程地址设置成 https://spacevim.org/git/repos/SpaceVim/
后,再执行 git pull
出现错误:
fatal: unable to access 'https://spacevim.org/git/repos/SpaceVim/': gnutls_handshake() failed: Error in the pull function.
但是,恢复成 github 或者 gitlab 仓库地址后,就又可以执行 git pull
了。
执行如下命令,看看网络链接到底怎么回事:
GIT_CURL_VERBOSE=1 git pull
输出为:
23:29:04.865626 http.c:664 == Info: Couldn't find host spacevim.org in the (nil) file; using defaults
23:29:04.884061 http.c:664 == Info: Trying 104.21.53.107:443...
23:29:05.085433 http.c:664 == Info: Trying 2606:4700:3037::ac43:d405:443...
23:29:05.085549 http.c:664 == Info: Immediate connect fail for 2606:4700:3037::ac43:d405: Network is unreachable
23:29:05.085601 http.c:664 == Info: Trying 2606:4700:3032::6815:356b:443...
23:29:05.085623 http.c:664 == Info: Immediate connect fail for 2606:4700:3032::6815:356b: Network is unreachable
23:29:05.118268 http.c:664 == Info: Connected to spacevim.org (104.21.53.107) port 443 (#0)
23:29:05.138108 http.c:664 == Info: found 372 certificates in /etc/ssl/certs
23:29:05.138186 http.c:664 == Info: GnuTLS ciphers: NORMAL:-ARCFOUR-128:-CTYPE-ALL:+CTYPE-X509:-VERS-SSL3.0
23:29:05.138223 http.c:664 == Info: ALPN, offering h2
23:29:05.138240 http.c:664 == Info: ALPN, offering http/1.1
23:29:05.149601 http.c:664 == Info: gnutls_handshake() failed: Error in the pull function.
23:29:05.149680 http.c:664 == Info: Closing connection 0
fatal: unable to access 'https://spacevim.org/git/repos/SpaceVim/': gnutls_handshake() failed: Error in the pull function.
删除已有 git
:
sudo apt uninstall git
下载 git 源码
wget "https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.xz"
tar -xvf git-2.9.5.tar.xz
安装依赖
sudo apt-get update
sudo apt-get install curl jq -y
sudo apt-get install build-essential autoconf dh-autoreconf -y
sudo apt-get install libcurl4-openssl-dev gettext -y
编译
make configure
./configure --prefix=/usr --with-openssl
make -j4
安装
sudo make install
最近刷视频总是刷到热辣滚烫的相关内容,趁着假日就来看看咯,确实挺不错:
剧中杜乐莹总是毫无保留地对朋友真心付出,即便是知道对方有私心在,仍然坚持按照内心想法去做,确实难能可贵。
短短两小时的电影,看到主角为了自己的梦想所做出的改变,和所坚持的,有些汗颜,似乎我也快忘记了自己的梦想。
大概一周多之前,登录 Github 网页版时候总是提示要启用两步验证。 因为比较忙,也没太在意,就点了忽略。等到最近两天,直接是不让登录了,必须要启用两步验证才可以登录。 着急要处理事情,结果不让登录,手上也没有能进行两步验证的工具。
这样的体验让我感到非常的暴躁。 本着一向不喜欢受制于乱七八糟规则的原则,决定把项目和仓库转移出去。 对于我来说,GitHub 也好,Gitlab 也好,仅仅是一个存储版本控制仓库的地方, 实在难以理解这类平台总喜欢折腾出各种花俏功能做什么。
也正式这个原因,让我决定把仓库转移到 Gitlab,因为我还保留有原 Github 账号的 ssh 密钥。 因此可以在本地继续推送代码,于是清空了仓库,并备注了对应的 Gitlab 的仓库地址。
Gitlab 也提供了类似于 Github page 的功能,
只不过他的自定义域名管理非常让人不爽,
逻辑居然是重定向到项目的固定域名。于是,每次访问 spacevim.org
时,都给我重定向到
https://spacevim-spacevim-c3011a6b21af70a6e8848d17c11652755bdad5d4e36c3.gitlab.io/
经过多次尝试后,果断放弃了。
因为域名在 Cloudflare 上,并且该平台也提供了静态网站构建的功能,因此,没必要舍近求远,直接使用 cloudflare page,并且把本站及 SpaceVim 的官网也一并移过来。
在构建本站时候,一直遇到一个错误:
Liquid Exception: incompatible character encodings: ASCII-8BIT and UTF-8
谷歌搜了一堆答案,要么是在 default.html 内增加 <meta charset="utf-8" />
, 要么是在 _config.yml
里面增加 encoding: utf-8
。尝试下来都不行。
感谢 vimzh 群友依云提供的答案,在构建时,增加环境变量:export LANG=C.UTF-8
大概一个多月以前,我看到过这样一篇文字《几款流行拼音输入法的“用户体验”评测(Win)》。 而我自己手机上一直使用的是华为版的百度输入法,虽然我不知道这个输入法到底会上传哪些内容,但是个人感觉还是不安全,因为打字输入涉及的东西太多。 聊天信息、密码等等,这些内容不应该存储在不可控的服务器上。
于是,我找到了这样一款手机输入法 fcitx5-android。Fcitx 的旧全名是“Free Chinese Input Tool of X”的首字母缩写,相信大家并不陌生,它是 Linux 系统下面一款开源、免费的输入法框架。早期我在使用 Ubuntu/ArchLinux 时候都是使用的这款输入法。 非常开心有人将这一输入法移植到了安卓平台。
fcitx5-android
的安装方式也比较简单,可以直接从 F-Droid
网站直接下载 APK 安装包。切记,根据自己的手机选择对应的 CPU 架构,一般手机都是 arm64-v8a
。
目前 fcitx5-android
只支持全键盘输入模式,恰巧我也是习惯于全键盘输入,因此使用倒是没有任何障碍。而我比较看重的功能特点主要包括:
fcitx5-android
不要求联网权限,也不收集任何个人信息。这一点是我切换该输入法的最核心原因,因为日常输入涉及的内容还是比较多的,因此对于哪些动辄上传收集输入信息的输入法还是比较反感的。
一些键盘的操作习惯也是可以设置的。比如:
更多功能就不一一罗列了,可以自行安装后打开配置界面查看。
在主题设置界面,可以设置按键按下的水波纹特效,以及是否显示按键边框,甚至按键的横向边距、纵向边距、圆角半径都可以设置。
文件树插件也是我日常非常常用的插件之一。先前尝试过 nvim-tree,今天晚上花了一晚上时间测试了下 Neo-tree.nvim,测试版本为:Neo-tree.nvim@e3b4ef0。 总的来说体验不是很好。
测试环境:
我的插件系统比较简单,直接下载 neo-tree.zip 至 bundle 文件夹,并手动更新 RTP。
参考 readme 上的介绍,直接完整复制默认配置,修改几个重要的配置,比如宽度、位置、自动关闭窗口等待。
1、设置 Neo-tree 的初始化路径失败;
我给 SpaceVim 增加了这个插件的支持,目前有一个快捷键SPC b t
无法实现。按照文档所说:Neotree dir=%:p:h
无效,打开后根目录任然是当前目录。
2、设置快捷键不是很方便;
在配置文件里,action 都是一些预设值的 string。
3、SPC f o
快捷键每次弹窗需要确认是否切换目录。
我是经常会同时编辑不同的 git 仓库文件,SPC f o
设置为打开文件树并定位到当前文件位置,即为 :Neotree reveal
,但是每次一旦切换不同项目时都会弹窗提示:
File is not in cmd, change to xxxxx
y/n
而且使用的是 insert 模式,我需要按下 y<Cr>
两下按键,应该提供一个设置选项,自动切换目录而不需要用户手动确认。并且,就算确认,完全可以使用 getchar()
函数。
当然了,这个插件也不是完全没有优势,个人感觉优势在:
1、支持多种 source,比如 buffers、git status 等,后续如果有机会,看看是否支持自定义。
2、git 状态的更新,使用的是异步函数,这点比 defx-git 要好一些,后者是我目前使用 defx 的一个痛点。
最后,暂时还是切换回 defx
,期待 neo-tree 新的改进,后续有机会再尝试。