zsh 配置和 iTerm2 常用功能

iTerm2常用功能

光标移动

Ctrl+a 光标移动到行首

Ctrl+e 光标移动到行末

Ctrl+f 前移一个字符

Ctrl+b 后退一个字符

屏幕分割

command+d 垂直分割

command+shift+d 水平分割

系统热键

image
勾选hotkey,然后输入cmd+.以后可以直接用快捷键呼出iTerm2。

Command 键

按住⌘键

  • 可以拖拽选中的字符串;
  • 点击 url:调用默认浏览器访问该网址;
  • 点击文件:调用默认程序打开文件;
  • 如果文件名是filename:42,且默认文本编辑器是 Macvim、Textmate或BBEdit,将会直接打开到这一行;
  • 点击文件夹:在 finder 中打开该文件夹;
  • 同时按住option键,可以以矩形选中,类似于vim中的ctrl v操作。

历史纪录

  • ⌘+Shift+h弹出历史记录窗口

高亮当前鼠标的位置

  • ⌘+/找到当前光标位置

参考你应该知道的 iTerm2 使用方法–MAC终端工具

zsh高级设置

安装 zsh-syntax-highlighting

zsh-syntax-highlighting是一款高亮命令行的插件,当输错命令的时候会显示红色,正确的命令会显示绿色。

  • 安装方法(OS X下)

    brew install zsh-syntax-highlighting然后把source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh加在.zshrc文件中最后一行。最后执行source .zshrc或者重启iTerm2就可以生效。

  • 问题解决

    我安装的时候由于安装方法错误导致每次启动iTerm2都会报错并且输出一大段代码,通过研究发现是zcompdump-xxx Pro-x.x.x文件存在问题,删除之后再次重新打开iTerm2就好了,从字面理解应该是和自动补全有关的文件,没有深究。

安装 autojump

oh-my-zsh是自带autojump插件的,但是这个只是插件,还需要安装autojump,它的功能是记录你曾经cd过的路径,比如你执行过cd user/download/a,下次只要j a,这个插件就会自动跳到合适的目录。

  • 安装

    brew install autojump,安装完之后需要在.zshrc文件中加入plugins=(autojump)[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh,然后source .zshrc或者重启iTerm2。

Textmate

同样也是自带的插件,主要用来在命令行里打开文件编辑。如果只是在.zshrc里配置plugins=(textmate)是不会有作用的,除非之前你已经设置textmate到/usr/local/bin目录下了。

  • 安装

    如果没有安装textmate要首先安装,安装完之后要链接到/usr/local/bin目录下。具体命令为ln -s /Applications/TextMate.app/Contents/Resources/mate usr/local/bin/mate。然后再设置.zshrc就可以了。打开文件tm xxxfile

其他插件

  • osx-设置plugins=(osx)
1
2
3
cdf: 快速cd到当前Finder所在的目录;
quick-look: 快速预览该文件,类似于在 Finder 中按下空格键;
man preview: 在 preview 中打开 man page;

可以设置alias preview="quick-look"给预览命令设置别名

zsh 好处

  1. 兼容bash,无缝切换
  2. 强大的历史纪录功能,输入 grep 然后用上下箭头可以翻阅你执行的所有 grep 命令。
  3. 各种补全:路径补全、命令补全,命令参数补全,插件内容补全等等。触发补全只需要按一下或两下 tab 键,补全项可以使用 ctrl+n/p/f/b上下左右切换。比如你想杀掉 java 的进程,只需要输入 kill java + tab键,如果只有一个 java 进程,zsh 会自动替换为进程的 pid,如果有多个则会出现选择项供你选择。ssh + 空格 + 两个tab键,zsh会列出所有访问过的主机和用户名进行补全
  4. 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
  5. 在当前目录下输入 … 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。
  6. 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件。
  7. 强大的插件和别名系统。例如alias -s html=vi意思是如果在命令行里输入以html结尾的文件会用vi打开,vi可以换成任意设置好的编辑器。

恢复到 bash

直接在命令行里输入uninstall_oh_my_zsh

补充

如果遇到/usr/local/etc/bash_completion:138: command not found: complete之类的问题,可能是由于之前安装过bash_completion导致的,需要在.bash_profile或者.bashrc里去掉

1
2
3
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

然后重启终端就应该好了,目前没找到比较好的方法。

参考: