今天是大悦城开业活动的最后一天,以前这个地方叫博大摩登。原先人气一点也不旺,但是这次过来感觉确实很热闹。
中午尝了一下新白鹿,一家不错的杭州菜。晚上看了一部电影,《长空之王》。实际上本来前天就想看了,周五晚上回来后在融创茂吃了个“等鱼柒·豆花烤鱼”,已经不记得是第几次吃这家了,小朋友似乎挺爱吃的。 完了本来想去看看电影,奈何时间太晚了,只能早早回去休息。
第一次了解到试飞员这一高危的职业,希望每一次试飞都可以安全落地。
看似和平的年代,实际上有很多人在背后默默付出,默默守护。
电影中穿插着各种家庭的元素,有父母、有老婆孩子,虽然不舍,但是还是默默支持,默默承受着。
张大队那句“做为军人,性命加使命才是生命”真的太贴切了,看完整个人都久久的沉浸在这样的敬佩、感动和自豪中,致敬这样一群默默守护我们的人!
最近在改写插件 tagbar 的日志系统,采用 SpaceVim 内置的日志插件。但是在调用 debug 函数时发现日志一直无法写入。
代码逻辑非常简单,lua 文件逻辑:
lua/spacevim/logger.lua
local M = {}
function M.test()
local derive = {
_debug_mode = false,
}
function derive.debug(msg)
if derive._debug_mode then
print(msg)
end
end
return derive
end
return M
vim script 这边只定义了一个函数:
autoload/testl.vim
function! testl#test() abort
return luaeval('require("testluaeval").test()')
endfunction
测试步骤:
let tlog = testl#test()
let tlog._debug_mode = v:true
call tlog.debug('hello')
运行到此处发现,消息并没有被打印。于是在 neovim 仓库提交了issue。得到的回复是,目前 neovim 还不支持 bindeval,但是支持 closures。
因此逻辑上做了如下改动:
lua/spacevim/logger.lua
local M = {}
function M.test()
local derive = {
_debug_mode = false,
}
function derive.debug(msg)
if derive._debug_mode then
print(msg)
end
end
function derive.start_debug()
derive._debug_mode = true
end
function derive.stop_debug()
derive._debug_mode = false
end
return derive
end
return M
vim script 这边只定义了一个函数:
autoload/testl.vim
function! testl#test() abort
return luaeval('require("testluaeval").test()')
endfunction
测试步骤:
let tlog = testl#test()
call tlog.start_debug()
call tlog.debug('hello')
通过以上的改动,测试步骤可以达到预期效果。
结束了一周的出差,周五到家后,习惯性的看看有什么好看的电影上映。正好看到《忠犬八公》上映。
刚开始还有一些疑惑,因为这部电影我记得很早以前就看过。仔细看来原来是大陆拍的,以前看的另外一个版本。
晚饭后,一家人一起去,正好赶上 7:20 这场。
可能是因为以前看过了,对剧情也大概有了心理预知,所以剧情上倒没有什么特别大的感触。
但是期间一些细节也让我感触很多:
小狗的想法要比人类简单太多太多了,他的忠诚值得善待!
今天晚上正好有时间,去看了下最新出来的电影《保你平安》。其实在看这部电影之前,已经对剧情做了大致的了解。
一开始,把这部剧当作一个喜剧来看的,看着看着代入感就太强了。
现在的网络环境确实挺糟糕的。虽然做到了实名制,但是实际上对于大众来说。网络论坛上出现的各种角色还是匿名的。你无法判断他到底是谁。
只能说,其实网络也不是法外之地,希望在网络上发表各种言论时。还是要有敬畏心理,慎言!
最近如果你关注 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 窗口 |