在 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年多了,之前因为种种原因想注销知乎,一直没有舍得。毕竟使用了很长时间,上面也留有不少记忆。 但是,最近知乎的一些改变让人无法接受。莫名其妙增加一个显示归属地的功能,这是对隐私的不尊重,虽然归属地算不上什么隐私。 但是这种在用户不知情,或者不授予的情况下,直接显示,有点太流氓了。
再见,知乎!
知乎现在非注册用户都无法正常阅读全文,没办法,只能再申请了一个账号:Eric Wong
今天下班后,回来本来想上微博看看最近有什么新鲜的事情。结果出现了这样一幕:
瞬间感觉人都不好了。很多好友,历史消息都还没有任何备份。所以说,现在完全不能依赖这类所谓的社交软件。后台管理员有无限大的权限。
使用 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 也增加这个插件支持。在次之前,先体验一下这个插件到底有哪些功能:
启用 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
因为 Vim8 和 Neovim 实现的 job 函数存在很大的区别,并且使用的方式也是不一样的。在制作插件时,如果需要同时兼容 Vim 和 Neovim 就会存在很大的麻烦。因此,在 SpaceVim 中,实现了一个 job API
,使用示例如下:
let s:JOB = SpaceVim#api#import('job')
let s:command = ['echo', 'hello world']
function! s:stdout(id, data, event)
" the data is a list of string
for line in a:data
echo line
endfor
endf
call s:JOB.start(s:command, {
\ 'on_stdout' : function('s:stdout'),
\ }
\ )
这个 API 的实现,参考了 neovim job 的模型。支持如下参数:
on_stdout
on_stderr
on_exit