-
-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
几个问题及优化建议 #28
Comments
逐一回答一下:
|
感谢大佬逐一回复,辛苦辛苦,其它都明白了,但是对于第6点,我有点明白了,虽然可以不填而直接在代码中获取Downloads文件夹,但如果这样的话,万一我想弹窗,而不想默认保存到“下载”文件夹,还是得传个参数,也就是无论如何都要传参数(或者写在配置文件中),所以还不如就直接用指定文件夹这个参数了。 |
关于第 6 点,可能也有人想直接下载到其他文件夹,而不是“下载”这一个。 |
确实是的。 |
大佬你好,我还有个疑问,不管是lrzsz还是你的trzsz,工作原理都是:
|
1、是这样的。 |
“上传就相当于按了非常多的键盘,下载就相当于显示了非常多的字符”,明白了,原来是这样。 果然是不一样的
这下我明白了,这三个都符合正则,所以都会触发自动调用python脚本,而调用的时候是 |
我试了一下:
这样的话,貌似只用“拖放操作”来自动输入 另外有一点不明白的是这个文档中,有以下描述 我试了通过 而且我不太明白为什么需要通过在ssh登录前面加上 |
trzsz-go 跟 iTerm2 没有关系,用 iTerm2 的 mac 最好不要安装 trzsz-go ,更没必要执行什么 你现在搞的太乱了。 |
关于 iTerm2 拖动不能上传的问题,你的 iTerm2 是什么版本?服务器的网络质量怎么样? 你试试将这里的 |
我只是一开始不知道所以两个都安装了,但是我用的时候用的就是trzsz呀,你看我在拖放触发执行的脚本那边填的是: /usr/local/opt/trzsz/libexec/bin/trzsz-iterm2 -p text dragfiles \(filenames) > ls -l /usr/local/opt/trzsz
lrwxr-xr-x 1 bruce admin 21 May 21 17:25 /usr/local/opt/trzsz@ -> ../Cellar/trzsz/1.1.2
> ls -l /usr/local/opt/trzsz/libexec/bin/trzsz-iterm2
-rwxr-xr-x 1 bruce admin 1019 May 21 17:25 /usr/local/opt/trzsz/libexec/bin/trzsz-iterm2* 而且我实际使用的时候并没有用 我后来测试了,是iterm的问题,我用的是昨天下载的最新的版本iTerm2-3_5_20230519-nightly.zip,我又试了iTerm2-3_5_20230503-nightly.zip,这个就没问题。 然后我又换回当前(2023-05-22)最新版本:iTerm2-3_5_20230522-nightly.zip,拖放上传同样会弹出让我选择,我按你说的把这里改大了几次,还是不能解决 发现这个报错
|
找到问题了,是我服务器安装了zsh和ohmyzsh的原因,我服务器切换到bash,拖放上传就成功了,现在我用今天(2023-05-22)的nightly build也没事了。 上面那个报错应该也是在zsh上才有,现在我在bash上拖了几次上传,没报错,能正常上传。 |
你把 trigger_match = re.search(trzsz_trigger_regex, output.decode('latin1')) |
改成 |
我又有一个不明白的问题:支持Ubuntu原生终端需要go版才可以吗?反正都是识别出那串特殊字符串后调用本地的命令,这命令用go写和用python写,不都是被调用执行么?是不是要弹出选择文件窗口必须用go才能实现,用python无法实现? 问题好像有点多,但确实没明白而又想知道为什么,所以就来问了🤣 |
python 应该也能做,但我想支持多平台,特别是 Windows。go 版一个 trzsz.exe 程序会比 python 的安装和使用简单很多。 |
明白了,这个确实是,go的好处就是单个文件搞定,啥也不依赖,不拖家带口,如果不是iTerm2用的python api,你都可以不用python版了,毕竟trigger调用python命令跟调用go可执行文件是一样的,只不过可执行文件首次使用要允许一下权限。 我又想出一个问题: 服务器端要接收文件夹时,需要 还是说,客户端会统一使用 |
在握手时有个字段标识是否包含目录。
|
这么说确实有道理,这我就明白为什么了 不过目前你这个在Mac上打开的文件选择窗口确实可以选文件和文件夹,但其实Mac是可以指定只能选文件或只能选文件夹的,我用applescript就可以指定,可能py程序无法指定吧。不过能选两种更好,更方便! 把 tell application "iTerm"
set thefile to choose folder with prompt "Files save to:"
set thefile to POSIX path of theFile
end tell |
mac 上,-d 时,现在也可以同时选文件和文件夹的吧,我忘了,你可以测试一下。 |
我试了,确实是这样的, 另外你说
那是不是说,windows端和Linux端(比如ubuntu) 是只要用到go版,完全不需要python版吗?因为只有go版本的话,好像就跟lrzsz类似,对应terminal的触发器没法直接调用 |
对的,Windows 和 Linux 一般用 go 版就可以了。当然 js 和 py 版也是能用的。 |
这下我终于明白为什么trzsz-go有 而这个小脚本用什么来写呢?理论上当然可以用bash shell,但为了实现上传进度条显示,还是必须用python来写,用python来写也比shell脚本方便的多,而且现在都是内置python3了吧?也没必要打包带上python了(直接一个单文件就可以),能用这玩意儿的,怎么也有点小基础吧,找不到python3,可以自己手动把py脚本里面的 不过这都是我设想的,其实我也好奇python是怎么调用的iTerm2 api的?目前的话,我看你这边只是trigger自动调用了 |
你要是只是想用 go 版 trzsz,你完全可以不用 iTerm2 触发器,把 iTerm2 触发器全关闭了,在 mac 上 不过,我还是会维护 python 版 trzsz 的,我自己用的就是 python 版。因为我在用 iTerm2 tmux Integration,这个现在只能用触发器这种方式,要不然就得去解释 tmux 命令模式,多个窗口时挺复杂的,暂时没空搞。 如果你用 python 或脚本调起 go ,那 go 也得实现 python 里的逻辑,这些逻辑主要集中在:https://github.com/trzsz/trzsz/blob/main/trzsz-iterm2/trzsz/iterm2/main.py ,这里面的逻辑是 python 特有的,我觉得没必要再用 go 重写一遍。你不用 iTerm2 tmux Integration 的话,只要 |
这个不好识别。建议你用 go 版, |
只有 python 版有提供
|
你说的这个我是知道的,我只是想问一下,trzsz-iterm2的功能,是不是一定要python才能实现?还是说其实go也能实现,只是觉得没必要再去重复实现一遍? |
明白了,本来觉得拖放功能挺好的,但是用这个就没法用拖放功能了 😂 |
我发现我登录服务器后(我走代理登录的服务器),在服务器上输入命令(还没有按回车),就是随意输入字符也好,它的回显速度,并没有在本地终端速度快,是不是只要我一输入字符,这个字符就马上被传到了服务器,然后再传回来,最后才显示出来,因此我才感受到有“延迟感”?(因为之前我以为是按回车后,我输入的字符才会被传送到服务器) |
除了 python api 部分,用 go 都是能实现的。 对的,延迟感跟 ping 的耗时有很大关系。 |
啊,原来 另外有一个问题就是:我看trzsz-ssh的代码量相比trzsz-go,少很多,那么trzsz-ssh是否依赖于trzsz-go?还是说它是完全独立的? |
对,是。 |
测试是可以了,不过不知道为什么服务器 系统:macOS Big Sur 11.5.1 (20G80) |
@xiebruce 看看是不是 iTerm2 触发器那个可以同时选文件和目录?go 版用的库好像是一直都不支持。 |
I used to think add lrzsz support to vte-based terminals. The idea of relay stdio is very clever. I'm still thinking about having a session retention like tmux that allows the client to exit and re-enter. |
@lonnywong about session restore (from client restart) |
搞好了,我是macOS下的iTerm2,有进度条,比lrzsz好多了
问题
1、为什么同时写两个语言的版本?因为如果是我写的话,肯定集中精力写好一种语言的,因为对用户来说,无论哪种语言都一样用;
2、go版本似乎无法独立使用,因为
trzsz-iterm2
是python写的,它好像是依赖于python版本的trzsz,我个人喜欢go版,希望go版本自带trzsz-iterm2
,不要依赖于python版;3、进度条功能是否由python实现,或者说则python调用iTerm2的api实现?是否一定需要python才能实现进度条而不能用其它语言?
4、为什么叫trzsz,t是什么意思?terminal吗?(没有别的意思,只是单纯好奇为什么是t)?
5、在trzsz-iterm2文档中,
which trzsz-iterm2
找不到trzsz-iterm2
,我是搜索整个/usr/local/Cellar/
才找到在以下路径我是同时用brew安装了python版本和go版本,不过由于两个都要链接到
/usr/local/bin/
会冲突,所以我先brew unlink trzsz
,然后再brew link trzsz-go
,不知道是不是跟这个有关。6、
-d
指定下载目录完全没必要吧,python和go都可以轻易的获取系统的家目录(不行用$(whoami)
也能找到家目录)7、目前trz传完后输出是这样的
由于文件名长,这样并不好看,不如这样:
tsz同理
换成
The text was updated successfully, but these errors were encountered: