简单分享一下 Warp 终端 blocks feature(分块)的实现原理

149 天前
 LonnyWong

Why

背景:我开源了一个 ssh 客户端,叫 trzsz-ssh ( tssh ),定制了一些网友需要的功能,解决了一些 ssh 相关的痛点,具体详看开源地址:https://github.com/trzsz/trzsz-ssh

起因:在 Warp 终端中,为什么原生的 ssh 客户端就可以支持 blocks feature,而我自己写的 tssh 客户端就不行呢?于是我一步步地深挖了其实现原理。

What

Warp 终端,当你 ssh 登录到服务器上,默认情况下,你在服务器上执行的每条命令以及其输出就会被 Warp 分别定义成一个个 block 块,你可以一块块地选中和移动,非常的酷。如果不支持,那整个 ssh 登录后的所有命令及输出就会被 Warp 定义成同一个 block 块,选中和移动都是整个登录后的所有命令及其输出,那就没那么酷了。

另外,当你在服务器上输入命令按 tab 键时,Warp 终端会弹出一个浮层显示可选的目录或文件,也很帅。如果不支持,那 tab 键也不能正常地进行补全了,这对我来说简直不能忍。

How

言归正传,Warp 终端是怎么实现 blocks feature 和自定义 tab 行为等功能的呢?

Wrap 终端中,内置了一些 shell 函数,bash 可以通过 type 函数名 进行查看函数定义,zsh 可以通过 which 函数名 进行查看函数定义。

Btw

我给 Warp 提了个 feature request https://github.com/warpdotdev/Warp/issues/3960,解决 tssh xxx 直接登录可以支持 blocks feature , 而 tssh 搜索和选择服务器登录却不支持 的问题。有需要的朋友去帮忙点个赞,提高下优先级。

附在 Warp 中正确安装和使用 trzsz ssh ( tssh ) https://github.com/trzsz/trzsz-ssh 的方法:

# Install
brew install trzsz-ssh
sudo ln -sv $(which tssh) /usr/local/bin/ssh

# Usage
ssh xxx
1579 次点击
所在节点    程序员
5 条回复
Sligcm
149 天前
牛的。trzsz-ssh 也很好用。
hxy100
149 天前
好东西
GoodRui
149 天前
warp 不能正确设置本地环境变量是吧?如果遇到中文经常出现中文???的问题。
现在主用 tssh+iterm2 ,给大佬点赞!真的好用!
LonnyWong
149 天前
@GoodRui 我也是用 iTerm2 ,不过 Warp 创造性的分块功能,值得研究下。
xiaojun996
149 天前
牛的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1000332

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX