“都9102年了,你还在鼓捣字符终端?”诚然,直观便捷 IDE 的集成开发环境GUI给很多人代理便捷方便和对新手友好的 开发环境 。但是IDE真有那么好么?为什么高效开发要用终端命令行?本文虫虫给家科普怎么利用终端工具实现高效的开发环境。
缘起——夸夸终端的好
可定制,可扩展
在IDE中,你只能使用专门定制的插件,你不能随心所欲的施展拳脚,很多时候为了搞一个小功能,查遍所有文档,最后发现没有提供。为了实用性,IDE还会隐藏一些细节,使得确定问题的真正原因会非常困难。比如IDE和 git 的集成,在很多IDE中都很费劲,而且其操作也和真正的Git思维不符合,很困惑。我们Git群中就常有人截出是在IDE用Git出错的图,看的 莫名其妙 。最后让他用命令行,问题一下子就解决了。
一栈式工具链
终端还有IDE不能实现另一个功能就是基于管道的工具链,一端输入,另一端输出,输出可以作为其他工具的输入,基于管道链,可以做很多一栈式处理。比如处理文本的 grep 、 sed 、 awk 、sort、uniq等套件。
一朝学会,终身受用
GUI虽然开始比较上手,但是用的多了翻了翻去的点按钮非常麻烦费劲。而命令行虽然开头需要记忆一些命令,但是越学越方便,等你上道了敲两下甚至打包成脚本,做成一键式小工具很爽很好用。举个例子在windows中要设置一些东西点来点去很费劲,但是用命令行做成bat小工具,一点就ok了。命令行学的命令都是硬技能,学会了随处可以用, 走遍天下 都不怕。而IDE则是学一个,换了一个甚至是版本就得重新熟悉。
一处配好,处处可用,人人可用
最后说下便携式方面。终端程序的配置非常便携,不管多复杂的配置,也只有个纯文本文件,将其复制目录即可,你可以将配置保存在Git仓库,当换个环境时候你只需clone一份配置即可。你想和其他伙伴分享配置也相当容易。要是换成IDE要做成一致的开发环境则要费很多的功夫。
命令行入门必备
作为一个命令行工具的拥趸,虫虫长期使用命令行开发和工作。以前的文章中虫虫也推荐过很多命令行工具和使用,大家有兴趣可以关注虫虫浏览和搜索历史文章就能看到。首先给大家列一个需要大家精通的常用命令行工具:
curl,用户下载和做HTTP请求,可以作为命令行浏览器和HTTP调试工具。(以前长篇文章介绍过)
grep ,文本搜索工具,文本处理三剑客之一。
sed ,用于流式文本转换工具,文本处理三剑客之一。
awk ,用于转换和提取数据。具有强大的编程功能,文本处理三剑客之一。
find ,强大的文件搜索工具(以前文章介绍过)。
cron ,定时执行,自动化任务必备。
gcc,gdb,make ,编译调试工具,编程和编译安装必备工具。
ssh、scp , 安全登陆管理和传输工具。
rsyn ,文件同步工具。
tar ,gzip ,打包和压缩工具。
top、ps、netstat、lsof 进程、链接等的管理工具。
strace ,进程最终工具,排障必备工具(以前文章介绍过)
rpm, yum 、apt-get ,linux系统包管理器。
git ,版本管理和Devops 工具(以前很多文章介绍过)
其他,还有很多工具和命令,在此不一一列出了。
今天我们主要给大家介绍几款开发环境中常用的高效地命令行开发工具 neovim , Tmux,iterm2, zsh 及其插件 oh-my-zsh 。
neovim
![](/uploads/7c029d9d-2489-4d1d-9289-a9a81b0c4be8.jpg)
vim是最常用的编辑工具之一。也是程序开发界的屠龙宝刀,和另一个编辑器(OS?)Emacs倚天,横行*nix界几十年, 打遍 天下无敌手。neovim是vim的精致包装版。它保留vim的标准键定义的所有功能,并且与vim配置选项完全兼容。额外改善和增加很多插件和功能。比如异步运行,可以避免vim在语法检查等任务期间冻结。除了viml语言外,支持使用你喜欢的语言定制vim,比如lua。
安装
nvim安装很简单,各系统基本都提供了个发行版的二进制包,利用包管理器可以直接安装:
CentOS 7 / RHEL 7:
yum -y install epel-release
curl -o /etc/yum.repos.d/dperson-neovim-epel-7.repo
yum -y install neovim
Arch :
sudo pacman -S neovim
Debian、Ubuntu:
sudo apt-get install neovim
Mac OS:
brew install neovim
迁移
neovim的插件和vim可互通,直接对其软连接:
![](/uploads/beff34ed-5823-49be-ad82-80737f93f5ac.jpg)
为了用vim命令就启动nvim,可以使用别名。在.zshrc,.bashrc或其他 shell 的配置文件中增加:
![](/uploads/0bdc4540-4986-4191-a934-8e71112ee3dc.jpg)
Vim初步
不要害怕命令行,尝试着学习一点命令,然后慢慢深入知道你精通,可以下载一张vim命令贴到你的桌台上,天天看着练,记住熟能生巧。尝试每天学习一点,避免尝试在短时间内学习太多技术。
![](/uploads/b09d6e15-45a0-4a6d-9355-4974772c21d1.jpg)
以前文章中虫虫也介绍过一个vim主题游戏PacVim,通过打游戏学习vim也是很一个很好的事情。
![](/uploads/0c948285-e222-489a-910a-5b82054d39f0.jpg)
禁用剪头键,使用ghjk:
修改配置~/.config/nvim/init.vim文件(或者~/.vimrc)中,增加以下配置:
![](/uploads/f916f634-e64d-4cc8-bc6b-95928808294c.jpg)
尽量将你所有的编辑工作都用vim做,坚持使用就是最好的学习。
Vim插件
如非必须,请避免使用插件。大多数情况下,vim已经具有你所需的功能,所以不要依赖任何第三方插件。使用少量插件可以保持你的环境快速,简洁,并更易于环境的迁移。vim有大量的插件,也有大量的教程可以供大家参考学习,这儿我只推荐两个我自己使用的非常好的插件你可以尝试下,主要是这两插件一点不会影响你vim性能:
NERDTree 树形目录浏览插件:
![](/uploads/ab2d0e7f-7892-4d94-8c2d-0e6aca3e3a56.jpg)
fzf, golang写交互式的命令行搜索工具,可以文件,历史命令,git提交等。
![](/uploads/f3579c8b-86af-4c9c-86fb-26bc0f19ff57.jpg)
Tmux
Tmux官方名称是终端多路复用器(terminal multiplexer
),一个很奇怪的名字,它允许你在单个终端窗口中具有多个选项卡和窗格。关于Tmux虫虫以前曾今专门文章介绍过,大家可以参考。
![](/uploads/ad3e4723-d575-43ff-9d78-dc1914037829.jpg)
使用Tmux的最大优点是,你可以并行运行任意数量的程序并查看其输出,而无需使用图形界面拖动面板或切换视图。
安装
可以使用各大 linux 发行版的软件包管理器一键安装Tmux。
Debian/Ubuntu:
sudo apt install tmux
CentOS 7/RHEL 7:
yum install tmux
Mac OS:
brew install tmux
Tmux初步
Tmux的按键绑定由前缀和绑定键构成。要触发快捷方式,请按前缀键,然后按绑定键。例如,如果你的前缀是Ctrl + a,并且用于打开新水平分割的命令键是”- “。首先按Ctrl + a然后按”- “。
![](/uploads/33da9a12-4613-4438-9137-1ff62b071b14.jpg)
Tmux插件
tmux有很多很棒插件( github :/tmux-plugins)为了安装和管理tmux插件,需要安装主题管理软件tpm。例如一个显示电池电池百分比的插件就很棒。
![](/uploads/1bc728c2-1fe6-4e02-9905-19ac7a99499b.jpg)
安装插件
我们以tmux-battery为例说明Tmux插件的使用。首先在Tmux配置文件.tmux.conf中添加以下行
set -g @plugin ‘tmux-plugins/tmux-battery’
打开Tmux,按键前缀(Ctrl + a)+ I来安装,就可以完成安装。
使用插件
插件只需在相关status_bar的字串#{battery_icon}, #{battery_percentage} #{battery_remain}, or #{battery_status_bg}配置中引用即可:
et -g status-right ‘#{battery_status_bg} Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | %a %h-%d %H:%M ‘。一些插件列表:
tmux-cpu 显示有关CPU使用率的信息
![](/uploads/3f60b0ca-603b-43c1-b847-86041427a690.jpg)
tmux-battery 显示电池状态(例子)
tmux-online-status 显示连接状态
![](/uploads/902df3ad-6408-464a-8151-d800e4631d61.jpg)
tmux-resurrect 重启系统后tumx的环境恢复
![](/uploads/761cb044-2dbe-465a-b2a6-d9ac547d81b7.jpg)
tmux-sidebar 当前目录的树状目录文件显示
![](/uploads/252eb99f-31e4-4548-ac52-5dff078bef1a.jpg)
tmux-urlview url浏览和快速打开
![](/uploads/8a37599e-ee76-40d4-b3d0-de5c6af15b69.jpg)
tmux-yank 和系统剪切板之间的复制,支持linux, MacOS 和cygwin
Zsh
在*NIX系统中,shell负责提供基于文本的界面以与底层操作系统进行通信。用户所有的行为操作都通过shell和内核交互。常用的shell为 bash ,它也是linux默认的shell。
Zsh是一个种更加好看,快捷和提供了很多附加功能的更优秀的shell。zsh提供了更加强大和人性化自动补全功能,出了bash支持的命令外,还可以支持文件路径,git应用,以及其他许多程序的补全。
zsh是高度可扩展的, zsh的配置位于主目录中名为.zshrc的文件(~/.zshrc)中。只要打开shell的新实例,就会在当前上下文中执行此文件。通过运行它,你可以访问由其导出的任何导出的环境变量,并允许你在启动时运行任何。
zsh配置相对比较复杂,但是不要怕,咱们有oh-my-zsh管理插件,它是Github过80000星的明星项目,也是码农们最喜欢的工具,利用它可以轻松添加插件,改变漂亮的主题以及自定义其他相关设置
![](/uploads/727a5548-39fe-4cca-86d3-fc354348e0ea.jpg)
安装
zsh安装很简单,只需使用发行版的包管理器安装即可。
Cenos:
yum install zsh
Arch Linux
pacman -S zsh
Ubuntu, Debian
sudo apt-get install zsh
安装 Oh My Zsh
oh my zsh安装需用curl或者wetget从github下载并执行安装,如下:
![](/uploads/127d67ab-4096-4a0a-a668-f295e55e1539.jpg)
zsh初步
首先配置zsh作为默认shell
chsh -s /bin/zsh
改变主题配置~/.zshrc文件,修改
ZSH_THEME=”robbyrussell” 配置为你喜欢的主题,比如agnoster,这是一个非常漂亮的主题:
![](/uploads/8b0a6de2-e41f-4c0f-b179-36728132a66e.jpg)
zsh插件
zsh有很多非常好看很优秀的插件,但是和前面提到的vim部分提及的一样,尽量少用太多插件。一些优秀插件推荐:
z插件 ,它允许你跳转到目录而不键入其完整路径。如果你在/home/chongchong/ cmd/ohzs目录中,到切换到/home现在想切换回ohzs,你不用输入完整路径,你只需键入z oh即可。z记录你频繁访问的目录,然后检索,并推测你应该期望跳转的目录。
git插件 ,他对git的提供了一些更简单易记的别名。
git:git
gcm :git checkout
gp:git push
gst:git status
grb:git rebase,
grba: git rebase –abort
grbc: git rebase –continue
更多插件和文档去看官方和搜索github。
iTerm2
iTerm2是一个终端模拟器。不要与shell混淆,终端模拟器只是包含shell的窗口,负责shell的显示方式。iTerm2很不错,因为它可以让我们设置想要使用的字体和颜色。通过按Ctrl +,配置其外观和其他有用的设置。可以让你的Mac终端由黑白亮骚起来:
![](/uploads/2c3aecec-42ca-4210-8a99-a83b42b165b5.jpg)