on-my-zsh
当我们在终端敲下一个命令后,命令的执行离不开命令解析器,而mac和linux默认的命令解释器Bash比较基础,缺少很多自定义的扩展功能,我们第一步就需要先让基础的命令解释器更加的好用,目前比较流行的是ZSH。
ZSH有更多的自定义选项,并支持扩展,它可以实现更强大的命令补全,命令高亮等一系列酷炫功能,而更强大的功能和更多自由扩展往往需要的配置步骤也会更多,为了让大家更好快速的使用上更强大的ZSH,一个叫 robbyrussel 的用户在 GitHub 上制作了一个开源配置文件 oh-my-zsh的项目,这是目前最火的一套 Zsh 配置方案,可以让用户开箱即用的完成很多常用的ZSH功能配置。该过程的几个设置步骤如下:
a、安装ZSH
直接通过brew命令安装
brewinstall zsh
b、安装on-my-zsh
通过curl来安装
sh -c"$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
c、安装几个常用的ZSH插件
智能目录跳转软件autojump
使用brew来安装
brewinstall autojump
安装完成后在~/.zshrc文件的最后添加如下配置
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
命令补全工具 zsh-autosuggestions
执行如下命令
gitclone git://github.com/zsh-users/zsh-autosuggestions$ZSH_CUSTOM/plugins/zsh-autosuggestions
终端命令高亮工具zsh-syntax-highlighting
执行如下命令
gitclone https://github.com/zsh-users/zsh-syntax-highlighting.git${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
d、插件配置
上面的步骤已经把比较常用的几个插件下载到了电脑上,我们修改下ZSH的配置文件启用这几个插件即可,打开~/.zshrc文件,然后找到plugins关键字,系统默认已经加载git文件,然后我们再追加下这三个插件即可:
plugins=(git zsh-autosuggestions autojump zsh-syntax-highlighting)
启用完成后重新打开终端,或者通过source ~/.zshrc命令重新引入终端的配置,就可以看到效果啦
e、效果示例
git命令直接使用缩写即可无需再打出完整的git命令,zsh中的git命令缩写;
使用j ${目标目录名}便可以直接快速跳转到指定目录,如下图所示:
输入命令时有智能提示,且通过高亮效果能判断出命令是否输入正确等等。
powerlevel9k
号称是Zsh下最漂亮的皮肤主题,项目地址https://github.com/Powerlevel9k/powerlevel9k,当然这个主题不仅仅是让终端看起来更加好看,更可以让命令行中透出更多的信息,例如:可以直接看到git的状态,是否需要拉代码、本地有几个变更还没有推送、git文件是否存在未解决的冲突等等,一个示例效果图如下:
该主题的安装步骤只需按顺序执行下面三个命令即可:
brewtap sambadevi/powerlevel9k
brewinstall powerlevel9k
echo"source /usr/local/opt/powerlevel9k/powerlevel9k.zsh-theme" >> ~/.zshrc
不过需要注意的是系统的默认字体对于一些特殊符号的展示可能会存在问题,如下图:
我们需要再安装下对应的主题字体便可以解决乱码问题,该步骤可以参考博客:powerlevel字体配置
如果不喜欢主题默认的配色方案,可以访问开源项目最舒服的终端配色方案,找到自己比较喜欢的颜色风格,下载对应的颜色配置文件,然后在Iterm2中的设置(快捷键CMD+i)中导入即可。
tldr
在使用终端时常常会忘记某些命令的用法,例如,想使用find命令按照文件名来查找某个文件,但又忘记应该拼接什么参数。这时我们可以想到使用系统自带的man命令来查看该命令的用法,但使用过man命令的同学常常会有如下体会,我们就临时使用一个命令,但man命令的使用说明过于详细冗长,阅读到自己想要的功能几分钟已经过去了,并不适合作为一个命令的速查方式。上网找文章查看,又需要来回点击网页且需要在浏览器和终端间切换,效率不够高,这种场景下tldr工具便是一个极佳的选择,可以直接列出某个命令的高频用法,并给出对应的示例说明,效果图如下:
有了tldr在绝大多数场景下便可以解决我们忘记命令的烦扰, 对于一些低频的命令也无需再去专门进行记忆,要用时在命令行速查即可。
安装方式
brewinstall tldr
项目地址
https://github.com/tldr-pages/tldr
thefuck
上面tldr工具解决了我们记住了命令但对用法比较生疏的情况。而有时我们会遇到命令的拼写也记不太清,或者命令敲错的情况,例如,将python打成了ptyhon,执行apt-get install vim安装软件时忘记加上了sudo,这时便会想有没有什么工具无需让我们去查询命令的正确用法,或者无需再让我们重新敲一遍正确命令,而它直接替我们把错误的命令纠正过来。the fuck便是这样一个神器,在我们敲错命令时,直接对命令行说fuck,它便会基于自己的命令库检索功能来提我们修正错误的命令, 提升我们的工作效率,演示图如下:
安装方式:
brewinstall thefuck
项目地址:
https://github.com/nvbn/thefuck
Tmux
终端复用的一款神器,要理解这款神器前先引用阮一峰大神的介绍,来让大家了解下Tmux的核心理念:
会话与进程
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。
Tumx的作用
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
原文链接:Tmux 使用教程
Tmux在我们需要SSH连接到远程服务器的场景中十分有用,一方面可以保持会话长久保活,避免长时间未操作而导致会话断开连接,类似于screen;另一方面我们去服务器排查问题和查日志时常常需要用到多个终端窗口来对照分析,如果需要我们一个去SSH连接打开的话特别费事,还需要在多个终端窗口间频繁切换,效率比较低,而有了Tmux这两个痛点便都可以解决
安装方式
brewinstall tmux
使用说明
大家可以直接参考阮一峰老师上面的博客,介绍的已经比较详细了,其中自己遇到的一个问题时对窗口更名后,随便使用ls或cd命令后,发现window名称会随着目录的不同而变化,我们的自定义命名不起作用。网上搜了后发现这个是zsh下oh-my-zsh的特性导致的,需要我们将~/.zshrc配置文件中的DISABLE_AUTO_TITLE="true"这一行注释掉,然后执行source ~/.zshrc导入配置,再去用Tumx修改窗口的名称,便不会发生变化
更加友好的个性化配置
Tmux虽然功能十分强大,但不得不吐槽的是其默认的快捷键配置设计的并不是特别人性化,键位的组合以及窗口切换比较麻烦。为此,我们通过更改配置项让Tmux使用起来更加的高效,下面是一份常用的配置文件,直接将该配置复制到 ~/.tmux.conf文件中即可
# Send prefix
# 把prefix的ctrl+b变为了ctrl+a,因为这样按起来方便些
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes
# 不用按prefix,直接用alt+箭头在pane之间switch。实际用过之后才发现真是太方便了!
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# 不用按prefix,直接用shift+箭头在window之间switch。太方便了!
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# Mouse mode
# 开启鼠标模式。用鼠标就能切换window,pane,还能调整pane的大小
set -g mouse on
# Set easier window split keys
# prefix + v 代表竖着切,prefix + h 代表横着切,比默认的更加好用
bind-key v split-window -h
bind-key h split-window -v
# 将window的起始设置为1
set -g base-index 1
# 将pane的起始下标设为1
set -g pane-base-index 1
# Easy config reload
# 下一次如果修改了.tmux.conf的设置的话,不用关掉tmux。直接用prefix+r,
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
参考博客: Tumx关键配置项
cloc
可以统计某个目录或者某个git版本下所用到的各种编程语言的代码行数,并可以识别出其中的空行和注释代码,十分的轻量简洁
安装方式:
brewinstall cloc
项目地址:
https://github.com/AlDanial/cloc