• 我来也
    2019-10-26
    这篇文章我也有些想说的.
    -----
    我用这些工具可以做到的事情有:
    1.每次即使是重启了系统(虽然mac不长重启),也能在有限的4步后恢复到工作状态.
      之前的各种连接,打开的文件,执行的程序都还在,路径都不用切换,相对位置都一样.
    2.由于使用了mosh,即使是电脑断网了,休眠了,只要网络恢复了,连接依旧还在那里.
    3.每次vi的窗口太多了,只需要退出后重新执行 `vi -S .workspace` 就可以恢复到最初的状态.
    4.即使电脑忘记了携带,换了另外一台电脑,只要能ssh/mosh到服务器上,
      执行mux命令就可以进入到之前服务器上的工作状态.比较方便快速处理线上问题.

    -----
    我的开发工具,老师的文章几乎都覆盖了,写的也很详细了.我就不重复了.
    但是有一个工具tmuxinator,我想要着重推荐下.
    这个可以使用yaml文件自定义执行的操作命令.
    编辑好配置文件后,可以一条命令,同时开启很多tmux窗口,并布局好,执行好一系列的命令.
    有了tmuxinator,即使是重启了电脑,也不怕终端丢失,有限的几步就可以恢复现场了.

    -----
    我工作中的使用场景是这样的:
    1.开启iTerm2
    2.本地执行mux(tmuxinator的别名),开启多个标签,分别执行预定义的命令.[重点]
    3.在mux打开的窗口中执行Ctrl+d.(临时端口该会话 为一下步做准备)
    4.使用`tmux ls && read session && tmux -CC attach -t ${session:-default} || tmux -CC new -s ${session:-default}`
      (这个命令可放在iTerm2的Profile-Command中 不用记)
      执行后,选中tmux的会话名,会在新的iTerm2窗口中打开该tmux的各标签.
      几乎不用记tmux的各种命令,像原生使用iTerm一样切换各标签.

    关于第2步,我想着重说一下.
    我一般是开启9个窗口.
    前几个标签使用mosh登录到服务器上(测试&预生产&线上环境),
      再在服务器上使用mux开启多个标签页.不同的标签页可能切换到不同的路径,执行不同的命令.
    再用一个标签在本地执行mux.把会用到,但不那么频繁命令集成进去.(比如本地测试时的几个目录,避免频繁的切换路径.)
    后面的几个标签就会打开最常使用的路径.比如项目目录.

    另外我用VIM开发项目,我一般都会为项目配置一个文件(比如叫.workspace).
    使用`vi -S .workspace`就可以直接进入到工作状态.比如打开常用文件,执行常用命令.
    这个文件实际上就是vi中的命令,避免每次重新输入.我的文件内容大致如下
    ```
    " 加载文件
    badd app/init.go
    badd main.go

    " 切换buffer 打开侧边栏
    buffer 2
    bdelete 1
    call tagbar#OpenWindow()
    ```
    -----
    推荐阅读的博文(也是我在网上找的,写的非常详细)
      Alfred 强烈推荐阅读:http://louiszhai.github.io/2018/05/31/alfred/
      Tmux 强烈推荐阅读:http://louiszhai.github.io/2017/09/30/tmux/
      tmuxinator 初步了解下:https://www.jianshu.com/p/49b70f705acf
      Swish 初步了解下:https://sspai.com/post/55285

    -----
    我的工作环境
    我的装备是:Macbook Pro 13' + 4K显示器 + HHKB蓝牙键盘
    我的开发工具是:iTerm2 + oh-my-zsh(比老师多一个autojump插件) + mosh + tmux + tmuxinator(配合tmux使用.使用yml配置文件) + vim
    另外的系统工具是:Alfred + SizeUp + Swish(这个是用鼠标的 但也强烈推荐).

    为了使用mosh,我才换的苹果电脑.现在也才使用了一年时间.
    -----
    题外话
    我是十一期间在池老师的twitter上看到的<特别放送 | 每个开发人员都应该学一些VIM>推荐,然后连着看了四篇.
    觉得比较适合我吧.虽然老师讲的东西我大多都懂,但是系统的跟着老师来一遍,也觉得蛮过瘾的.
    我工作了十年,但周边可交流的人并不多.他们大都是用的IDE.
    就我比较独特,用的VIM,对命令行和一些工具也比较感兴趣.较少用鼠标.

    今天早上等优惠劵到账后就来买了专栏,接着看.(都忘记使用返现链接了😁)
    展开

    作者回复: 这个回复和@Johnson的回复都非常高质量。在进行讨论的时候该给出了很好的建议和工具。

    关键字:Workspace as Code!!

    tmuxinator 我还是第一次听说。看了一下,确实对保持Tmux Session做了进一步的工作。总的来说,你这样的配置可以说是把工作环境作为Code。Workspace as Code :) 对减少环境的设置很有效!!推荐你写一篇博文把这个分享给大家。

    另外几个链接也不错。推荐大家都看看 :)

     1
     5
  • Johnson
    2019-10-26
    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的一个私有仓中。效果还不错。后面可以考虑公开出来 :)

     3
     3
  • hexinzhe
    2019-10-25
    请葛大展开讲讲ipad ssh 工作流

    作者回复: iPad上SSH,我使用的是Termius(https://apps.apple.com/us/app/termius-ssh-client/id549039908)。它支持Mosh。

    这里我放了一张截图:
    https://sharemyfiles.s3-ap-southeast-1.amazonaws.com/iPad-termius.png

    我后面专门写一篇iPad上的工作流的文章。

    
     3
  • Hills录
    2019-11-25
    coder (vs code 的web 版本)+ tmux,用了很久了,随时随地任何设备恢复开发环境。

    作者回复: coder 这个蛮酷的!谢谢分享

    
    
  • Jxin
    2019-10-25
    🤣手贱买的surface。压着重装黑苹果的想法,周末去研究下win的窗口先。

    作者回复: 哈哈,研究回来给大家介绍一下 :)

    
    
我们在线,来聊聊吧