tmux和screen之间的区别还真没怎么注意过,不过从开始用的时候感觉screen就比较老了,tmux更新好像更积极一些,可能区别在于tmux更强调强大的交互?session,window,pane 反正tmux给我的感觉就是分屏好用强大。
Terminal
在MacOS上大多数人都会选择iTerm2,我以前也是,不过现在我发现它大部分的功能我都用不到,而且它对xterm支持的并不是很全,我想让spacemacs在terminal中的光标的形状和颜色跟着模式变,这样非常棒,如果是iTerm2的话我就没法用xterm的控制字符序列来改变光标的形状和颜色,得用它自己的控制序列。所以我现在就直接用MacOS自带的terminal+MacForge(扩展管理)+MouseTerm plus(实现了xterm的OSC 12/112),仅供大家参考。
Windows上的terminal很多,爱用什么的都有,但我感觉在Windows上没有类linux系统的搭配光有terminal是不够的。我是用Msys2,它自带的mintty就我的尝试来说,是唯一能满足我所有需求的terminal,作者维护开发也很积极,能让spacemacs完美的工作。Msys2可以让我们使用ssh sshserver,mosh,tmux以及常用的linux命令,体验很好,虽然比起WSL稍微慢点儿,但这个方案可以让你在windows很多版本上都能有同样的体验,不像WSL你必须得起码是win10。
Linux上的terminal更多了,感觉所有的服务器都有xterm,但是它确实太老了,gnome-terminal算是不错的选择吧,之前比较喜欢用xbuntu,所以觉得xfce-terminal好,gnome-terminal和mac上的terminal的配置不支持配置文件的方式真是蛋疼,没法把配置放到dotfiles的git仓库里面,xfce-terminal就可以,但后来发现xfce-terminal对xterm控制序列支持的更差。不过现在看来我都是在windows或mac登到linux上,所以对linux上的terminal需求不是很大,感觉还好。
Shell
自己开发机还是zsh最合适,尤其是oh-my-zsh的git, zsh-syntax-highlighting, zsh-autosuggestions这三个插件,绝对对得起这篇的题目。这里提醒大家git插件使用的时候,如果进入一个code量特别大的repo比如LLVM这种,你会发现git插件把shell拖得特别卡,解决方法在https://blog.csdn.net/a_ran/article/details/72847022。
Bash在服务器上最常见了,大家支持的比较多,好多公司发布一些软件产品中的脚步也是用bash执行,有时候工作需要编个小脚步也是不错的。
Csh或者叫tcsh在一些EDA工具或者硬件芯片开发的服务器上基本都是默认,我勒个天,在bash或zshrc里面一句话的功能,在csh里面能把你搞死,就编脚本而言,我们还是远离它吧,哈哈哈。
SSH/Mosh+Tmux
Mosh + tmux 绝对是绝配,只可惜好多公司内部安全部门不给开放端口没法用,这里有个有趣的小问题,既然Mosh肯定能连回到server,那按理上为什么我们还需要tmux呢?大家可以想一下,答案见keithw在https://github.com/mobile-shell/mosh/issues/394的回答。
如果没有mosh,可以用autossh来自动重新发起ssh连接并且自动attach到当时断掉的那个tmux session,具体方法请看我的github仓库https://github.com/Johnson9009/dotfiles/blob/master/shell/zsh/local.alias.zsh.template#L36。不过即使这样也没法跟mosh比。
最后说我认为最重要的
dotfiles,也就是用github仓库管理这堂课讲的所有工具的配置,它是一种可以把linux系统的home目录用git仓库管理的思路。如果这些工具的配置文件不用git仓库管理起来的话,个人效能还是不够高,管理好的话,到了一个新公司,也许只需要一两个小时你就可以将你高效的环境建立起来。更关键的是,这种用github管理起来的方式,可以让你不断的优化你的这套个人高效能环境。我现在就切身体会到了它的好处,只不过我太懒,没有什么文档说明我的dotfiles仓库,如果大家有兴趣借鉴可以去看commit message和注释,这两个写的还是蛮认真的。
说了这么多,欢迎大家一起分享,以及拍砖,哈哈哈。
作者回复: 这个回复和“我来也”的回复都非常棒。下面是我的一点反馈:
1. 这个关于Tmux vs. Mosh的解释的确很清楚:“Well, first off, if you want the ability to attach to a session from multiple clients (or after the client dies), you should use screen or tmux. Mosh is a substitute (in some cases) for SSH, not for screen. Many Mosh users use it together with screen and like it that way.”
2. “我想让spacemacs在terminal中的光标的形状和颜色跟着模式变,这样非常棒,如果是iTerm2的话我就没法用xterm的控制字符序列来改变光标的形状和颜色,得用它自己的控制序列。所以我现在就直接用MacOS自带的terminal+MacForge(扩展管理)+MouseTerm plus(实现了xterm的OSC 12/112),仅供大家参考。”
这个推荐写一篇博文解释一下。我没有看太明白。
3. dotfiles 这种方法我有使用。我没有使用GitHub宫内宫开仓,用的是GitLab的一个私有仓中。效果还不错。后面可以考虑公开出来 :)