基本配置

  • 终端软件用 iTerm2 https://iterm2.com/

  • shell 用 zsh,macOS 默认

    • cat /etc/shells 查看有哪些,echo $SHELL 查看用的是哪个解释器
    • 更改 shell 指令 chsh -s /bin/zsh
  • 配合用 oh-my-zsh https://ohmyz.sh/

    1
    2
    3
    4
    # 安装
    sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    # 卸载
    uninstall_oh_my_zsh

  • 很多人用的 powerline https://github.com/powerline/powerline

    • 是啥?「Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, fish, tmux, IPython, Awesome, i3 and Qtile.」
    • 但原来的样式似乎也很好看,不准备折腾了
    • 注意需要配合字体 Meslo https://github.com/powerline/fonts
    • 参见这里

zsh

关于 zsh

摘自 MacTalk 的一篇介绍文章 终极 Shell

  1. 兼容 bash,原来使用 bash 的兄弟切换过来毫无压力,该咋用咋用。
  2. 强大的历史纪录功能,输入 grep 然后用上下箭头可以翻阅你执行的所有 grep 命令。
  3. 智能拼写纠正,输入gtep mactalk * -R,系统会提示:zsh: correct ‘gtep’ to ‘grep’ [nyae]? 比妹纸贴心吧,她们向来都是让你猜的……
  4. 各种补全:路径补全. 命令补全,命令参数补全,插件内容补全等等。触发补全只需要按一下或两下 tab 键,补全项可以使用 ctrl+n/p/f/b上下左右切换。比如你想杀掉 java 的进程,只需要输入 kill java + tab键,如果只有一个 java 进程,zsh 会自动替换为进程的 pid,如果有多个则会出现选择项供你选择。ssh + 空格 + 两个tab键,zsh会列出所有访问过的主机和用户名进行补全
  5. 智能跳转,安装了autojump之后,zsh 会自动记录你访问过的目录,通过 j + 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过hadoop-1.0.0目录,输入j hado 即可正确跳转。j –stat 可以看你的历史路径库。
  6. 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
  7. 在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。
  8. 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find,文件太多就歇菜了。
  9. 更强的别名:请参考配置一节。
  10. 插件支持:请参考插件一节。

zsh/oh-my-zsh

oh-my-zsh GitHub https://github.com/ohmyzsh/ohmyzsh wiki https://github.com/ohmyzsh/ohmyzsh/wiki ###TODO

zsh 主题

目前用了(默认的?) robbyrussell 也挺好看

插件

Github: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/

总论

  • 基本
    • 可以看到上面的GitHub列表或者 wiki 中查看好用的插件;
    • 其实在 oh-my-zsh/plugins 目录下也可看到,并且可以看到一些底层实现的影子;
  • 安装
    • 部分插件需要额外安装,思路:
      • 首先看 wiki
      • 根据插件官网的方式进行安装,注意安装后(应该)可以不必根据那上面的指南 source 或者修改 .zshrc
        • 目前倾向于可以直接安装的通过 brew (或者如 pip 安装) 进行 👍;
        • 部分直接支持 zsh,可通过 git 下载,将其放在 .oh-my-zsh/custom/plugins 下;
      • 因为若是在 oh-my-zsh/plugins 中的插件,里面应该有激活的指令,因此只需要在配置中的 plugins 中添加名字即可。

需要安装的

zsh-syntax-highlighting

地址 https://github.com/zsh-users/zsh-syntax-highlighting

(似乎也可以 brew 安装之后 source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh) 但如果用的是 Oh-my-zsh,这样安装似乎更方便:先 clone 到 zsh 的插件目录,然后进行配置

1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

~/.zshrc 中配置

1
plugins=( [plugins...] zsh-syntax-highlighting)

zsh-autosuggestions

地址 https://github.com/zsh-users/zsh-autosuggestions

试了下超级好用!

可以 git 安装到上述目录下,也可用brew:brew install zsh-autosuggestions 然后配置开启

autojump

plugin https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/autojump GitHub https://github.com/wting/autojump

安装一

安装根据官网 brew install autojump,然后根据提示将下面这样加入配置即可

1
[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh
安装二

实测,可以 brew install autojump 之后,直接配置 .zshrc ,在 plugins 中加入 autojump 即可; 机制应该是在 .oh-my-zsh/plugins/autojump/autojump.plugin.zsh 中进行了检测。

语法

试用:autojump 会记录你浏览过的目录列表,对于每个目录建立一个索引/权重,然后使用指令的时候跳转到匹配的权重最大的那一个。

1
2
3
4
5
6
7
8
9
j foo       # 打开包含 foo 的目录
jc bar # 跳转到子目录下的含 bar 的目录下
jo music # 用文件浏览器打开
jco images # 用文件浏览器打开子目录

# 帮助
j -h
# 查看目录存储情况
j -s

无需安装的

git

默认开启,GitHub https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git。 记录一下常用的指令快捷键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
g       git

ga git add
gaa git add --all

gb git branch
gba git branch -a
gbd git branch -d

gc git commit

gco git checkout

gcp git cherry-pick

gf git fetch
gp git pull
gup git pull --rebase
gupv git pull --rebase -v
gupa git pull --rebase --autostash
gp git push

glg git log
glgg git log --graph

extract

默认安装仅需要开启即可;并且配置了 x: aliased to extract。 试用:直接 x filename 即可

sudo

连按两下 ESC 在命令行首加上 sudo

iTerm

快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
command + t          新建标签
command + w 关闭标签
command + 数字 command + 左右方向键 切换标签
command + enter 切换全屏
command + f 查找
command + d 垂直分屏
command + shift + d 水平分屏
command + option + 方向键 command + [ 或 command + ] 切换屏幕
command + ; 查看历史命令
command + shift + h 查看剪贴板历史
Control + u 清除当前行
Control + l 清屏
Control + a 到行首
Control + e 到行尾
Control + f/b 前进后退
Control + p 上一条命令
Control + r 搜索命令历史

iTerm 主题

GitHub https://github.com/mbadolato/iTerm2-Color-Schemes