Mac下命令行环境配置(上)

今天碰巧有人提到了Mac下的命令行环境,当年我为了一个好用又好看的终端环境,可谓是废了老鼻子劲了,这次有机会正好记录一下。

期间参考了无数博文,年代久远我已经不记得了,在此向曾经分享过类似信息的同仁们表示感谢。

话不多说,先上效果图。

屏幕截图

图中用到了以下软件和开源项目:

  • iTerm2
  • Powerline
  • tmux
  • zsh
  • oh-my-zsh
  • k-vim
  • Powerline patch fonts

iTerm2

这个不用说,自从有了iTerm2,Mac自带的终端就下岗了.

iTerm2是免费软件,简直良心!官网:iTerm2,截止刚才iTerm2的稳定版本是3.0.7 beta,下载之后解压,将iTerm2.app拖到Applications里就可以用了。

iTerm2配置

从配置来看,iTerm2就非常强大。

Powerline

Powerline是一个终端增(mei)强(hua)工具,由Python驱动,项目地址:Powerline。当然安装它很容易,用pip安装就可以了:

pip install powerline-status

之所以名称是powerline-status而不是powerline,是……一个悠久的历史问题,不用管它就是了。进入python,看看安装是否成功。

>>> import powerline
>>> powerline.__file__
['/usr/local/lib/python2.7/site-packages/powerline/__init__.py']

如果import没问题,上面的目录就是powerline的安装目录了,记下来,后面会用得到。

zsh

Mac默认的Shell是bash,当然Shell不止这么一种了,有csh、zsh等等,目前看来zsh还是比较好用的(据说还有fish,不过没用过,没有发言权)

zsh好处多多,最简单常用的就是命令/文件名/参数补全,简直不要太方便。Mac应该自带了zsh,如果没有带,用Homebrew安装就可以,然后更改默认的shell

chsh -s /bin/zsh

输入密码,再次启动终端/iTerm2就可以使用zsh了。

不过……第一此启动,zsh会提示你,没有配置文件~/.zshrc,不过这个不要紧,接下来我们会创建。

oh-my-zsh

oh-my-zsh

oh-my-zsh是一个整(lan)合(ren)包,项目地址:oh-my-zsh,项目首页有安装方式,我摘抄一下好了:

Shell安装方式:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

wget方式:

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

等待它将项目clone到~/.oh-my-zsh下,他会自动安装,生成一个~/.zshrc,这个时候你的zsh应该变样子了。

tmux

tmux可以说是GNU Screen的替代品,可以在终端下开启多个Window/Pane,并且保持shell都在后台运行,比如和用ssh连接到你的服务器上去,启动了一个服务,但是ssh断开了,这个时候你刚刚启动的服务也就停止了。如果你使用tmux,你可以再次连接到ssh上去,只需要

tmux a

断开/暂停的世界又回来了。

Mac不自带tmux,你可以通过Homebrew安装

brew install tmux

安装好后直接输入tmux就可以运行,不过tmux……需要配置,有简便的方法,参照下方

tmux 配置

这里放出我的tmux配置

# vim: ft=tmux
# remap prefix to Ctrl + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# force a reload of the config file
unbind r
bind r source-file ~/.tmux.conf\; display "Reloaded!"
# quick pane cycling
unbind ^A
bind ^A select-pane -t :.+
#其他操作习惯
unbind %
unbind h
unbind j
unbind k
unbind l
bind | split-window -h #竖向切分
bind _ split-window -v #横线切分
bind h select-pane -L # h 向左移动光标
bind j select-pane -D # j 向下移动光标
bind k select-pane -U # k 向上移动光标
bind l select-pane -R # l 向右移动光标
unbind &
bind k kill-window # k 关闭当前窗口
bind -n 'F2' new-window
bind -n 'F3' prev
bind -n 'F4' next
set -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

这个配置文件是我参考多篇文章修改来,具体原文年代久远已经不记得了,如果原作者看到了……请告诉我。

操作很好解释,所有的操作都有一个prefix,这里重新绑定成了Control-a,默认是Control-b,竖向切分就是按顺序Control-a |

下面是常用的一些操作(都要加prefix):

  • 新建窗口 c
  • 关闭窗口 k
  • 横向分裂 -
  • 纵向分裂 |
  • pane之间切换 C-a C-a
  • 关闭当前pane x

退出tmux有两个方法,一个是将所有window都关闭,shell的exit也可以,使用C-a xC-a k也可以,不过这种方式tmux是正式退出,不会在后台工作。

另一种方式是C-a d即detach(分离),而再次进入输入tmux a即attach。

Vim配置

不是我不用Emacs,实在是……心有余而力不足
——沃·镃基硕德

Vim的配置我真的是折腾了好久好久,最终找到了一个整(lan)合(ren)项目,k-vim

项目全中文,跟着走就是,这里不再赘述。