当我对 Linux 的印象彷佛还停留在黑乎乎的命令行界面上的时候,我身边的一些朋友告诉我或者建议我使用 Linux 时,我会一脸惊讶的问他,那个怎么用(来开发或者平常使用)?html
首先说说我天天打交道最多的 Shell 吧,我给本身设置的默认 Shell 是 Fish。你还能够搭配 fzf 这个软件,实现高级的命令补全功能。前端
Git 也是平常开发中使用频率最高的软件之一,Tig 则是 Git 的一个命令行界面,不只能够展现图形化提交记录,还能对提交信息进行全文搜索,除此以外,这也是我找到的第二个可以快速打开超大 git 仓库的 Git UI,另外一个是 Windows 专属的 Git Extensions。linux
Docker 可让我部署应用变得更加容易,而 lazydocker 则可让我用一种“懒人”的方式来管理本机的 Docker。git
Lazy Docker —— 简单易用的 Docker 管理面板.
docker
不论是哪一个 Linux 发行版,都会自带官方钦定的软件包管理器。pacman + AUR + yay 是我最喜欢的软件包管理方式,pacman 用来安装来自官方仓库的软件,若是官方仓库没有收录某个软件,那么 AUR 里面大几率会收录它,你甚至能够在 AUR 中找到 JetBrains 全家桶和 Xilinx IDE。而 yay 则容许我用统一的方式来安装来自不一样软件源的软件包,极大的提升了使用体验。shell
Windows 桌面上有一个叫作“个人电脑”的图标,可是这并不意味着我真的能彻底掌控个人这台电脑。我无法随意的修改系统的字体,我无法在命令行中显示 Emoji(9102 年,微软终于缓解了这个问题),我无法设置系统的默认快捷键,我无法根据本身的喜爱作不少的事情,在一些不是 PC 的设备上,我甚至无法关掉开机的“duang!!!”。不,这不是个人电脑。数据库
而使用 Linux,我就再也没有受过这种限制,先在 Wiki 上查找相关的说明文档,而后根据文档去修改对应的配置文件,出了问题能够去问问神奇的搜索引擎,翻车死机了也不要紧,插上 LiveCD 一顿操做又可让电脑正常的开机工做。就这样,我在一次次不满现状、配置系统、翻车救砖、成功修改的循环中收获了许多,也让我定制出了我想要的工做环境。若是你想了解个人翻车收获,能够看看下面的一些文章:vim
让我持续的使用 Linux 做为平常主力操做系统的缘由很是简单,由于跟他一块儿工做很是的温馨。
编写代码的工具无非就两种:IDE 与编辑器。我最经常使用的 IDE 是 JetBrains Rider,它一站式解决了我前端、后端以及数据库开发的问题。若是只是用来编写简单的文本,我首选的是 neovim,搭配 SpaceVim,颜值效率两不误。除此以外,vscode 也是我会用到的编辑器之一,可是我不怎么用它来写前端代码,只有在须要编写 PowerShell 脚本以及 Fake 脚本的时候我才会用到它。
邮件是最有效的沟通方式,因此 Thunderbird 确定少不了。国产聊天应用,例如 QQ 和微信,我都安装在手机上,由于这上面只会有闲聊的消息,因此只须要使用 KDE Connect 同步一下消息通知就行了。我所在的开发团队使用钉钉进行沟通,还好钉钉的网页版比微信网页版强不少,因此安装一个 Electron 套壳的钉钉客户端就很是足够了,固然,有时候我比较懒的话,就直接使用 KDE Connect 来同步钉钉的消息,并不会在电脑上启动客户端。
在 Linux 上,我能够选择本身喜欢的窗口管理方式,我习惯按照窗口的使用场景把它们安排到不一样的虚拟桌面上,这样能够减小在窗口选择器中切换窗口的时间。对于经常使用的窗口,例如 Konsole
终端模拟器,我给他分配了 Meta
+ Enter
的快捷键,让我能够随时随地的唤出个人终端命令行,而不用在众多的窗口中寻找。
Yakuake 是一个全局下拉式终端模拟器,能够作到随叫随到,因此我专门用它来运行一些与工做无关的命令,例如在网上学习到了新的 shell 黑魔法,只须要按下 Ctrl
+ Alt
+ Space
下拉终端就能够在本身的电脑上尝试运行了。
虽然个人主力系统是 Linux,可是我仍然可以享受到 Office 全家桶的便利。OneDrive + Office Online 基本能够处理工做中会遇到的绝大多数的 Office 文件了。而 OneDrive 云存储也能够经过使用 rclone 的方式挂载到个人电脑上,在使用体验上与本地硬盘并无太大的差异。
原先使用 Windows 的时候,能够用 IIS 来守护开发时要用的 AspNetCore 进程,如今切换到了 Linux,我选择了使用 PM2 + Nginx Docker 做为替代品,相较于 IIS,这种运行后台进程的方式更加轻量,不会涉及到权限的问题,并且出了问题也容易排查。
对于数据库这样的软件,我并无选择用安装软件包的方式来运行它们,Docker 更适合这类进程,经过一个 docker-compose 就可让我实现一键启动开发环境的效果。
而像 Aria2 以及 rclone 这样的软件,由于它们在运行的时候须要访问个人文件系统,因此就不适合使用 Docker 来运行(Docker 会污染文件权限)。这个时候用户级的 Systemd 就很是好用了,用户登陆时启动、失败自动重试、网络链接后启动,这些须要均可以用 Systemd 来实现。
由于有 FreeDesktop 的存在,因此我能够很是容易的利用桌面环境提供的功能。
open
命令能够用来在终端使用关联的应用程序打开一个文件;xclip
则能够用来操做剪切板中的内容; notify-send
则能够用来建立通知消息。这些工具能够帮助我打破终端与桌面环境的次元壁,例如在完成一个长时间任务后发送一个系统通知提醒我,很是的便利。除了这些命令行程序外,一些有图形化界面的软件也能够利用 FreeDesktop 带来的 API 来开发酷炫的功能。例如,若是你使用 fcitx 的话,按下 Ctrl
+ ;
,就能够查看剪切板的历史记录,KDE 自带的 Clipboard 挂件也有相似的功能,并且更增强大。
libinput-gestures 也是一款很是实用的软件,它能够用来自定义触控板手势,支持的手势种类多,并且能够用来触发任意的命令,是自定义系统行为不可或缺的软件。
这篇文章受启发于 为何建议你们使用 Linux 开发,我与这篇文章的做者的观点不太同样,我并不会建议其余人随随便便就把开发环境切换到 Linux,由于当一我的对 Windows 以及 MACos 感到很是不满的时候,他天然就会选择使用 Linux —— Talk is cheap, show me your dot files 😂。