最近如果你关注 Neovim 的社区,就会发现使用 Lua 开发的插件越来越多。
Neovim 默认就支持 luajit,早些时候,做过一次 luajit 与 vim script 速度的比较。
以下是一个测试的 Vim Script 脚本。
function! Fibo(N) abort
let t = a:N
let b = 0
while t > 0
let t = t - 1
let a = 1
let b = 1
let c = 73
while c > 0
let c = c - 1
let tmp = a + b
let a = b
let b = tmp
endwhile
endwhile
echo b
endfunction
function! LuaFibo(N) abort
lua << EOF
local a, b, r, c, t
t = vim.api.nvim_eval("str2nr(a:N)")
while t > 0 do
t = t - 1
a = 1
b = 1
c = 73
while c > 0 do
c = c - 1
r = a + b
a = b
b = r
end
end
print(string.format("%d", b))
EOF
endfunction
function! s:test(...) abort
" for func in a:000
let start = reltime()
call call(a:1,[a:2])
let sec = reltimefloat(reltime(start))
echom printf('%s(%d): %.6g sec', a:1, a:2, sec)
" endfor
endfunction
command! -nargs=+ TestFunc call s:test(<f-args>)
载入以下脚本后执行如下命令可看到测试结果:
:TestFunc Fibo 1000
:TestFunc Fibo 10000000
:TestFunc LuaFibo 1000
:TestFunc LuaFibo 10000000
本地测试结果:
Fibo(1000): 0.410364 sec
Fibo(10000000): 1470.280914 sec
LuaFibo(1000): 9.052000e-4 sec
LuaFibo(10000000): 1.235385 sec
通过以上简单的测试,可以明显看到 luajit 的速度比 Vim script 速度要快很多。 随着 Neovim 对 Lua 的推崇,已经出现了很多使用 Lua 开发的插件。 同时,一些知名的 Vim 插件也被使用 Lua 进行重写。
SpaceVim 中又不少内置的插件,比如flygrep
、iedit
、task-manager
等等。
这些插件原先使用的是 Vim script,为的是兼容 Vim 和 Neovim。
在最新版的 SpaceVim 中,部分插件已经使用 lua 重写了。当然了,原先的 Vim script 写的版本也保留下来了,以便于兼容 Vim。
目前已经重写的插件包括:
flygrep
: 实时异步代码检索,根据输入的内容,实时展示代码搜索结果。iedit
: 类似于 emacs 的 iedit-mode,提供了多光标编辑的支持。todomanager
: 项目待办事项管理在 Windows 下之前一直使用 xshell 作为 ssh 客户端。自从 Neovim 和 Vim 都增加了内置终端后,于是就把 xshell 这个软解卸载了。使用 Neovim 内置的函数来实现 SSH 连接。
首先,需要启用 SpaceVim 的 ssh 模块:
[[layers]]
name = 'ssh'
ssh_port
: 设置服务器的 ssh 端口ssh_address
: 设置服务器的地址或者 ipssh_user
: 设置默认的用户名示例:
[[layers]]
name = 'ssh'
ssh_command = 'D:\Programs\Git\usr\bin\ssh.exe'
ssh_user = 'root'
ssh_address = '192.168.1.10'
ssh_port = '8097'
快捷键 | 功能描述 |
---|---|
SPC S o |
打开 ssh 窗口 |
首先需要下载 shadowsocks-rust。可以使用 curl 直接下载:
curl -fLo shadowsocks.tar.xz https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.15.0-alpha.4/shadowsocks-v1.15.0-alpha.4.x86_64-unknown-linux-gnu.tar.xz
解压:
tar -xf shadowsocks.tar.xz
解压完,在当前目录可以看到一个 ssserver
文件,添加可执行权限:
sudo chmod +x ssserver
新建配置文件 config.json
{
"server": "my_server_ip",
"server_port": 8388,
"password": "mypassword",
"method": "aes-256-gcm",
"local_address": "127.0.0.1",
"local_port": 1080
}
执行如下命令:
nohup ./ssserver -c config.json &
知乎已经使用了5年多了,之前因为种种原因想注销知乎,一直没有舍得。毕竟使用了很长时间,上面也留有不少记忆。 但是,最近知乎的一些改变让人无法接受。莫名其妙增加一个显示归属地的功能,这是对隐私的不尊重,虽然归属地算不上什么隐私。 但是这种在用户不知情,或者不授予的情况下,直接显示,有点太流氓了。
再见,知乎!
今天下班后,回来本来想上微博看看最近有什么新鲜的事情。结果出现了这样一幕:
瞬间感觉人都不好了。很多好友,历史消息都还没有任何备份。所以说,现在完全不能依赖这类所谓的社交软件。后台管理员有无限大的权限。
使用 Vim 有很长一段时间了,我记得最早期的时候, 还是在网上看各种 Vim 配置的教程。 而这些教程里面,大部分都会提到一个叫做文件树(File Explorer)的功能。
文件树插件,也是我日常使用 Vim 必备的插件。 刚开始接触 Vim 的时候,那时候插件还很少, 只有内置的 netrw。 后来接触到了 nerdtree 以及 Shougo 的vimfiler, 包括 Shougo 使用 neovim remote 插件特性重写的 defx.nvim。
目前,SpaceVim 已经支持了以上这些文件树插件,可以通过 filemanager
选项进行设置:
[options]
filemanager = "nerdtree"
Neovim 这一项目目前默认支持 lua,很多插件被使用 lua 重写, 文件树也不例外。 最近就看到一个不错的文件树插件nvim-tree.lua, 计划给 SpaceVim 也增加这个插件支持。在次之前,先体验一下这个插件到底有哪些功能:
测试版本:[email protected]
启用 nvim-tree
:
[options]
filemanager = "nvim-tree"
如果当前目录修改后,再使用 :NvimTreeFindFile
无法发现当前文件。
禁用默认的快捷键
尝试搜索文档和issues,最终只找到一个:Default keymaps cannot be unset。 里面有一段回复:
vim.g.nvim_tree_disable_default_keybindings = 1
但是,设置后,启动就警告:
[NvimTree] Following options were moved to setup, see bit.ly/3vIpEOJ: nvim_tree_disable_default_keybindings