作者| Matthieu CNEUDE
译者|新月、书篇|屠民
生产| csdn (id: csdn news)
以下是译文。
我是一个骄傲的Ubuntu用户。
Ubuntu不仅易于安装,而且易于使用。在此之前,我是Windows用户,感觉Windows和Ubuntu很相似。然而,日复一日,年复一年,我的自豪感逐渐消失了,取而代之的却是无边无尽的烦恼。Ubuntu让我大失所望:
有时会显示奇怪的错误。
非常慢。
必须手动编译许多官方代码库中没有的应用程序。
必须手动编译许多官方代码库中完全过时的应用程序。
为了尽可能多地使用键盘,必须学习大量随机快捷键,尽管只是一款基本的工具。
由于没有更好的选择,所以我坚持了好多年。某天早上,我兴致勃勃地打算升级LTS版本。然而,一切都崩溃了。我甚至无法启动Ubuntu。我想方设法修复所有问题,但当时的我对Linux一无所知,不知该从何处下手,毫无头绪。Ubuntu论坛也没有提供太多帮助,于是我决定重新安装。
我的内心充满了痛苦,然而,我的老朋友Ubuntu,又一次华丽丽地让我失望了。
几个月后,我有幸与一群出色的开发人员合作,他们向我展示了如何构建高效的开发环境。
于是,我的整个工作流程都发生了转变。我从Ubuntu转移到了Arch Linux、从Unity到i3、从PhpStorm到Neovim。经过多年的默默抗争,我终于拥有了一个可扩展、稳定、高效的新系统。我甚至编写了一堆脚本,只需一个命令即可安装我所需要的一切。一切准备就绪,我可以大展拳脚了。
不黑不吹,这成为了我职业生涯中最重要的一个转变。为什么?
感谢Arch Linux,我学到了很多有关Linux的知识。
为了解决各种问题,了解操作系统抽象层下的工作方式非常重要。
我认为开发人员必须了解Linux,因为Web服务器主要运行在基于Linux的系统上。
我习惯于在所有工具中使用一套统一的快捷键。
我可以通过键盘完成90%的系统操作。我能记住这些快捷键,是因为这些键位的设置很合理,而不像ctrl + shift + alt + e等常见的GUI快捷键。
当切换到如今使用的这套工具后,我真正体会到拥有一个优秀、高效及可扩展的开发环境有多么重要。我感到宾至如归。这套系统终于能够满足我所有的需求,我无需再跟系统作斗争了。
如今的我非常享受开发的工作,而且我可以说:我享受到了十倍的编程乐趣!
在本文中,我们将讨论:
为什么Linux shell是开发人员的最佳工具?
为什么我们应该使用Arch Linux?
什么是i3?
如何使用urxvt、tmux和tmuxp创建功能强大的终端?
一款迄今为止我所见过的最强大的IDE,它可以将Linux Shell的功能发挥到极致。
如何改善在终端中使用git的体验?
如何在shell中获得更好的MySQL和PostgreSQL使用体验?
你对这些话题感兴趣吗?下面请随我一起畅游无鼠标开发环境的梦幻世界。
开发人员的好朋友,Shell
图:简单高效的Shell
在本文中,我将反复提到shell,最常见的shell有bash和Zsh,我使用的是后者,而且我强烈推荐。
纯文本的力量
你可能在想:为什么要使用基于文本的Shell?
基于文本的Shell下有丰富的应用程序。即便没有完全满足需要的工具,也可以很轻松地开发一个shell工具,无需设计最上层的GUI。
可以为最终用户提供许多可选的功能,让最终用户完全按照自己的意愿选择。你不可能在一个图形界面中塞入20个按钮吧?但是,基于命令行的应用程序可以有20个选项。
Unix的思想允许你使用特定的工具来满足特定的需求。通过管道将一种工具的输出作为输入传递到另一种工具,这可以提供无穷无尽的可能性。
你可以利用Shell非常轻松地自动化常见的乏味任务。自动化是提高生产力并节省精力的关键。
通常命令行的执行速度非常快。没有沉重的图形界面,也没有3D菜单,来拖慢计算机的速度。
命令行不会占用大量内存。相比起Chrome来说,命令行可以节省80%的RAM。
“命令行工具比Hadoop集群快235倍。”
—— Adam Drake
我鼓励你尽可能使用Shell。虽然刚开始的时候,你可能会不适应,但Shell可以让你受益良多。
CLI应用程序之上的图形界面又如何呢?在我看来,它有严重的缺点:
隐藏了许多可以通过CLI轻松使用的功能。
无法解决(甚至无法理解)来自CLI层的任何错误。
遇到以下情况,你会感到很困惑:
在没有图形界面的情况下,在远程服务器上使用这类工具。
向经验不足的开发人员介绍该工具的实际工作原理。你可以解释GUI,但不能解释应用程序本身,尤其是当GUI和CLI采用了不同技术的时候,而且不幸的是这种情况非常普遍。
我有一段使用sourcetree的亲身经历,sourcetree是git的图形界面。当时我在和一名初级开发人员一起工作,而他不懂得git是如何工作的。每当出现问题时,他都搞不明白GUI在后台调用了什么命令。这比直接在Shell使用CLI git更令人沮丧。
无鼠标方式
使用Shell的时候,你主要依赖键盘。可能你会觉得有点吃惊,但我会尽量避免使用鼠标。因为这是提高效率的关键之一:双手放在键盘上可以加快你的速度,而且更重要的是,可以让你更加快乐。
以下是无鼠标方式的一些优点:
将手从键盘移到鼠标很累。试试看不用移动手,你就明白了。
双手一直放在键盘上会让你倍感轻松。你无需在敲键盘和移动光标之间不断切换。
即便只是编写购物清单,也有一种黑客的感觉!很酷,是不是?
ArchLinux:获取最新的软件
图:Arch Linux在虚拟机上流畅地运行
与其他Linux发行版相比,Arch Linux具有许多优势。
滚动发布系统
滚动发布系统究竟是什么?Arch Linux社区会不断为我们和用户提供所有软件的更新。可确保你安装的程序是最新版本。
你无需担心自己是否错过了某个工具的强大功能和修复补丁。Arch Linux可以保证你的系统保持最新版本。
那么应用程序是不是很丰富?Arch Linux的官方代码库非常庞大。大多数时候,你都可以找到自己所需的一切。如果找不到,你还可以访问AUR(Arch用户代码库),找到你想要的一切。我一点也没有夸张。在使用Arch Linux多年之后,AUR仍然能不断带给我惊喜。
唯一的缺点:AUR的应用程序并不一定经过了良好的测试。所以,请谨慎使用。但是,只要查看其构建记录就可以知道安装之后会发生什么。
当从头开始安装Arch Linux时,你可以选择每一个需要安装的应用程序。凡是你不需要的东西,都不会出现在你的硬盘上。未经你的同意,任何应用程序都无法在后台运行,你是掌控一切的主人。
ArchLinux周围的社区也很强大。一般他们都值得信赖,而且他们不会在stack overflow上随便抛出一些Shell命令却不做任何解释(这一点与Ubuntu有很大的不同)。
再说,谁稀罕stack overflow呀?Arch Wiki才是最出色的Linux Wiki。同样,这个网站至今仍然能带给我很多惊喜,里面几乎应有尽有。
现在,你可能在想:Arch Linux稳定吗?它是否会每两周崩溃一次,让你感觉无望?
你会发现网上的很多人都在长篇大论讨论这个问题。我的建议?别听他们的。我每天都在使用Arch Linux,已经坚持了5年。在我安装的过程中,Arch Linux从未崩溃过,要说有也是在我刚刚开始尝试使用的时候。
如果你谨慎使用AUR,那么完全可以依赖这款功能强大、轻巧且可自定义的Linux发行版。
有时,pacman(不是吃豆人,而是Arch Linux的打包管理器)会要求你进行一些手动修改。但Arch Linux的官方网站会提供详细记录,而且可以立即解决。
使用i3管理窗口
图:i3 的窗口
ArchLinux不带任何类型的桌面或窗口管理器。你需要自行安装。我毫不犹豫地选择了i3 Windows Manager。
这是一款非常轻便、快速且易于使用的窗口管理器。i3没有精致的3D效果。一切都是为了提高效率和生产力,避免在视觉上造成干扰。
你可以使用i3创建工作区。工作区占据整个屏幕,而且还可以从一个屏幕移动到另一个屏幕。你可以在工作区中打开一个或多个窗口。它们会嵌入到你喜欢的应用程序。
很简单,对不对?而且最吸引人部分是:你可以使用键盘轻松完成所有操作。你可以通过简单的按键来打开、移动和关闭工作区或窗口。你还可以使用快捷键来调整窗口大小。你甚至可以使用快捷键来打开自己喜欢的应用程序。
一切都合乎逻辑。在第一次安装i3后,只过了2-3天,我就可以顺畅地使用它。你的肌肉可以记住你需要的快捷键。
i3的配置灵活性很大。如果你想尝试一下的话,可以参考这篇文章(),逐步完成基本的i3配置。在你对i3有足够的了解之后,就可以根据需要对其进行自定义。
ArchLinux Wiki提供了完善的i3文档()。
Urxvt,Tmux和Tmuxp:将终端变成生产力猛兽
图:Urxvt中的Tmux,打开了4个窗格和两个窗口
我尝试了很多终端模拟器,而Urxvt是我的最佳选择。
这是一款非常轻巧且快速的终端,尤其是如果你运行Urxvtd、Urxvt守护进程的话。它可以非常容易地生成任意终端。
话虽如此,由于有了Tmux,现在我只需同时打开2-3个终端。这是一款功能强大的终端复用器,你可以:
创建会话,包括窗口和窗格。
根据需要在终端中打开尽可能多的窗口。每个窗口都会占据整个终端窗口,而且还可以分成窗格。即使你需要3个窗口,每个窗口4个窗格(总共12个不同的Shell),tmux也可以轻松应对。
分离和附着会话。想象一下你错误地关闭了某个终端,这时你可以打开一个新终端,然后附着会话就可以恢复整个tmux会话。
同步窗格。你需要在三台不同的远程服务器上运行完全相同的命令?那么只需打开三个窗格,用一个命令同步它们,你在第一个窗格中键入的所有内容都会被复制到其他窗格中。
还有很多我不了解的用法。
如上所示,一切都可以用键盘来管理。当然你也可以使用鼠标,在学习期间使用鼠标也很方便。
你甚至可以利用tmuxp,进一步自动化tmux会话。实际上,你可以编写一个配置文件来打开所需的窗口和窗格,并在其中自动启动应用程序。
假设为了启动一个新项目,你需要:
在一个窗格中运行dockercompose。
在另一个窗格中,在Docker容器中运行npm run dev。
在另一个窗口中,打开到生产服务器的ssh连接。
在tmuxp的帮助下,你只需要一个命令行和一个简单的配置文件就可以自动化上述所有操作。
适合自己的IDE
我选用的IDE是Neovim,它是Vim的一个强大分支,可以与Shell配合使用。Neovim和Vim非常相似,因此我会使用“Vim”来指代二者。
图:本文就是用Neovim写的
你害怕了?别跑。让我解释一下,为什么你应该认真考虑学习Vim的知识。
我写了很多关于Vim的文章,这里我简单总结一下Vim的优点:
使用Vim编程很有趣。
Vim可以让你充分利用键盘。
原版的Vim拥有很多功能,你总是能够学到新技巧。
Vim有一个很好的社区,其中维护着许多插件。不论你使用何种编程语言,不论是JavaScript、Golang、PHP还是Clojure,这些插件都能够满足你99%的需求。
你不必再受任何语言的限制。你想通过同一款编辑器使用Rust、Go和C编程,同时还可以使用自动补齐、高亮显示语法以及其他功能?Vim就是完美的选择。
一切都是高度可配置的。忘记你的其他喜好吧,使用Vim,你可以微调任何所需的内容。
不会有通知时不时地冒出来,打断你的工作(说的就是你,Intellij IDE)。
你可以针对自己的工作流构建自己的IDE,同时不必在IDE中塞满你永远不会使用的东西。
非常快。
免费。
改善Git:tig和diff-so-fancy
图:tig:在分支层次结构的顶部,你还可以在底部看到所做的所有修改
图:diff-so-fancy 可以快速显示所有的修改内容
我感觉在最常见的日常任务中,使用Shell版的git非常方便。有时,git在用户体验方面的决策虽然有些怪异,但我们最好一开始就能意识到这一点。
基本上,你每天需要使用:
● git push
● git pull
● git branch
● git checkout
● git merge
● git rebase
● git diff
你真的需要一个完整的GUI吗?
我使用的第一个有关Git的工具是tig,你可以利用这个工具遍历git分支的层次结构,并显示每个提交的详细信息。
还有一个工具是git-so-fancy,它可以在终端中以非常易读的方式显示git diff。在提交代码之前,我经常使用它来验证自己的修改。
你可以从Arch Linux官方代码库下载这些工具。
更好的MySQL及PostgreSQL命令行工具
如果你需要在Shell中通过一个快速实用的界面来与数据库交互,则我建议你尝试mysql的mycli,以及PostgreSql的pgcli。
这些工具类似于MySQL和PostgreSql自己的CLI:
自动补齐数据库、表、连接等。
可以将常见的操作写成代码段。
如果想在Arch Linux上安装这两个工具,则需要通过AUR获取它们。
你准备好成为一名无鼠标开发人员了吗?
生产力、多功能性、控制性和舒适性是我选择构建和配置整个开发环境时考虑的主要因素。无鼠标开发环境改变了我作为一名开发人员的生活,我想通过本文分享我从这次经历中获得的知识。
有些从未尝试过Vim的人说,Vim是地球上最复杂的工具,不要听他们胡言乱语。不要听他们争论Arch Linux的崩溃次数比Windows 95还多。我相信这些言论并不属实。
这种环境的设置和理解需要付出一些时间和精力,大约需要几周的时间。但在这之后,你将拥有自己的开发环境,不仅可以满足当前和将来的需求,还可以掌控一切,让你感觉如鱼得水。
图:我的小窝
原文:
本文为 CSDN 翻译,转载请注明来源。