在目录间跳跃

cd -2
# bash里面可以cd -回到上一个目录(即最后一次调用cd时所在的目录),但zsh里面有cd -2, cd +3这样的用法,
cd - tab
# 在输入cd -之后按TAB能够列出目录名供挑选补全。不过需要注意的是,这里-2并不表示倒数第二次调用cd时的目录,而是倒数第二次通过pushd记录的目录,如 果打开了auto_pushd选项,那么这两个的含义倒是一样的;
..
# zsh 的目录跳转更为智能,你无需输入cd,直接输入路径即可。..表示后退一级目录,../../表示后退两级,依次类推。(...的作用和../../相同)
d
# 输入d,将列出当前 session 访问过的所有目录,再按提示的数字即可进入相应目录。

更多关于目录跳转

zsh的改进方法
# 首先,假如/opt/rubystack-1.9/下面有apache2和apps这两个目录,输入
cd /opt/rubystack-1.9/a #然后按TAB的话,首先会补齐为apache2,再按TAB会补齐为apps,不需要象bash下面那样继续输入字母;
#如果你想进入/opt/rubystack-1.9/apps/redmine,那么可以先这样输入 
cd /o/r/a/r #然后按TAB,如果这是唯一匹配,那么zsh会补全为/opt/rubystack-1.9/apps/redmine,但如果还存在一个/opt/rubystack-1.8/apps/redmine,那zsh就会列出来让你挑选;
#如果你现在在/opt/rubystack-1.9/apps/redmine,但你想进入/opt/rubystack-1.8/apps/redmine,可以这样: 
cd 1.9 1.8 #这表示将完整路径上的1.9替换为1.8再使用;
# 你可以打开auto_pushd选项(通过命令setopt auto_pushd),这样你通过cd切换目录时,zsh会自动将前一个目录加到栈里,这样你就不会因为忘记pushd而遗憾了;
bash里面可以
cd - #回到上一个目录(即最后一次调用cd时所在的目录),但zsh里面有
cd -2, cd +3 #这样的用法,并且在输入
cd - #之后按TAB能够列出目录名供挑选补全。不过需要注意的是,这里-2并不表示倒数第二次调用cd时的目录,而是倒数第二次通过pushd记录的目录,如 果打开了auto_pushd选项,那么这两个的含义倒是一样的;
#zsh里面将~这个符号的用法进行了扩展,我们可以用
hash -d www=/var/www/html # 定义一个路径别名,然后用
cd ~www #就可以进入到/var/www/html了
参考资料: Refining Linux: ZSH Gem #20: Changing directories the pro's way

autojump

autojump也是插件

j 目录名 # autojump 按照你的使用频率记录路径,使得目录的跳转更为方便。安装brew install autojump。如需跳转到包含 'foo' 的目录,执行j foo,这是最基础,也是最常用的命令。除此之外,还有jc, jo, jco命令,查看官网文档获取更多的使用方法。

进一步

autojump: 快速进入频繁访问的目录(bash/zsh通用)
使用方法
下载这个 https://github.com/rupa/z/blob/master/z.sh (这个文件名跟zsh没有必然联系),放到某个位置(比如/usr/local/lib/z.sh);
在~/.bashrc或者~/.zshrc里面加入一句source /usr/local/lib/z.sh,这使得以后的cd命令会被z.sh统计各目录访问频率;
你得按老方法切换目录一阵,以便z.sh能够知道哪些目录是最常用的;
用z -l命令即可列出历史上你访问各个目录的频率了;
用z regex 命令即可进入你频繁访问的目录

多尝试一些键

⇥ 补全

↑ ↓ 可以上下翻相关

ls竟然也加强了

ls *.png查找当前目录下所有 png 文件,ls **/*.png递归查找。

补全

#补参数
tar - tab
按下 tab 键显示出所有待选项后,再按一次 tab 键,即进入选择模式,进入选择模式后,按 tab 切向下一个选项,按 shift+tab 键切向上一个选项,ctrl+f/b/n/p 可以向前后左右切换 #这是标准的emacs光标移动快捷键.
以前杀进程是ps aux | grep xxx查进程的 PID,然后kill PID。有了 zsh,直接kill xxx然后按下 tab 键即可~

配置文件配置theme

这几个关于theme和prompt的操作可能会出现各种问题, 参考隔壁2016-12-11的blog

~/.zshrc
ZSH_THEME="random"   #”robbyrussell"
#还有很多快捷使用是配合zshrc的, 参考旁边2016-12-09的blog.

查看当前theme情况

echo $SHELL #这个显示当前使用的是啥shell
print $RANDOM_THEME #这个会显示当前zsh的theme, 基于ohmyzsh: http://stackoverflow.com/questions/31642930/how-do-you-determine-which-theme-you-are-on-when-zsh-theme-random

使用prompt快速切换theme

#Available prompt themes are listed by running the command:
prompt -l
#For example, to use the walters theme, enter:
prompt walters
#To preview all available themes, use this command:
prompt -p

进一步

不过我有时也想显示一点别的内容,zsh有个RPROMPT环境变量用来设置显示在右边的提示符,可以在有需要的时候即设即用,很方便。比如我用它配置了 用来显示当前git仓库名、分支名和提交状态(也许你又要问我为什么不用oh-my-zsh,那是因为我没看见它显示git仓库名,而这个庞大的东西我不 知道怎么去修改它。甚至下面这段代码我也是抛弃了StackOverflow上得票最多的答案,而是选了个得分为0的答案为基础,仅仅因为后面这个我能看懂,能修改它)
_git_repo_name() {
  gittopdir=$(git rev-parse --git-dir 2> /dev/null)
  if [[ "foo$gittopdir" == "foo.git" ]]; then
    echo `basename $(pwd)`
  elif [[ "foo$gittopdir" != "foo" ]]; then
    echo `dirname $gittopdir | xargs basename`
  fi
}
_git_branch_name() {
  git branch 2>/dev/null | awk '/^\*/ { print $2 }'
}
_git_is_dirty() {
  git diff --quiet 2> /dev/null || echo '*'
}

setopt prompt_subst 
RPROMPT='$(_git_repo_name) $(_git_branch_name) $(_git_is_dirty)'

命令历史

#多会话共享历史
我一般会用tmux开多个会话,这种情况下记得刚才输入过这个命令,但找了半天没找到才意识到好像是在另外一个window/pane里面输入的。zsh的一个功能特性是share_history,这样在一个会话里面可以访问另外一个会话的历史命令了。不过这个特性可能会让人有些不习惯,这样的话可以试试另外两个选项:setopt APPEND_HISTORY或者setopt INC_APPEND_HISTORY.
参考资料: Refining Linux: ZSH Gem #15: Shared history
#a clear history
setopt hist_ignore_space
alias cd=" cd"
alias ls=" ls"
第一句使得不将以空格开始的命令行记录到历史当中(这在需要在i命令行中明文输入密码时也挺有用,这样不会在历史记录中看到你的密码了); 
后面两句使得cd/ls这些简单的命令就不记录到历史了,这样用history查看的时候是不是更清晰了?
来自 : http://chneukirchen.org/blog/archive/2012/02/10-new-zsh-tricks-you-may-not-know.html
另一个技巧: 每个目录记录自己的history: <http://linuxtoy.org/archives/zsh_per_dir_hist.html>
http://www.lowlevelmanager.com/2012/05/zsh-history-expansion.html

设置zsh为默认shell

 chsh -s /bin/zsh #设置默认shell, 待测试.

关于插件请看隔壁blog: 2016-12-11

入门请看

mactalk: http://macshuo.com/?p=676
官网: http://ohmyz.sh

进阶阅读

看过入门之后可以看, 特别好的链接,
http://wulfric.me/2015/08/zsh/
http://www.cnblogs.com/bamanzi/p/zsh-simple-guide.html(进一步的内容主要出自这个地址)

官网

https://github.com/robbyrussell/oh-my-zsh/wiki/Themes

https://github.com/robbyrussell/oh-my-zsh

https://github.com/robbyrussell/oh-my-zsh/wiki/Customization

https://www.smashingmagazine.com/2015/07/become-command-line-power-user-oh-my-zsh-z/