My Effective Zsh
Zsh是比Bash更好用的Shell。
zsh
install
macos 可以使用 HomeBrew安装Zsh
1 | brew install zsh |
ubuntu 可以使用 apt安装Zsh
1 | sudo apt install zsh |
切换默认shell
在macos中切换默认shell:
1 | echo $SHELL |
如果遇到 chsh: /usr/local/bin/zsh: non-standard shell
问题,可以修改 /etc/shells
,在文件中添加一行/usr/local/bin/zsh
。
linux的操作和macos类似
ohmyzsh
ohmyzsh是zsh的管理工具。
install
使用安装脚本,安装ohmyzsh。
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
内置插件开启
1 | # .zshrc |
tweak
history显示时间
1 | # .zshrc |
git 项目打开慢
Oh My Zsh 为终端增加了自动跟踪 git 仓库变化的能力,其实是在检测到当前目录是在 git 管理的目录中时,执行了一系列的操作来获取到变化。但是往往会导致终端长时间无响应,或卡顿。
1 | #通过设置标识关闭 dirty 检查 |
第三方插件
1 | plugins=( |
zsh-history-substring-search
安装插件
1 | git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search |
激活插件
1 | plugins=( [plugins...] history-substring-search) |
通过cat -v
命令查看上下键的符号表示,然后绑定键位:
1 | bindkey '^[[A' history-substring-search-up |
使用:
- 键入任何先前命令的任何部分
- 使用刚才绑定的键上下翻找目标命令
control
+u
终止搜索
fzf
1 | # ubuntu |
- CTRL-T -将选定的文件和目录粘贴到命令行上
- CTRL-R -从历史记录中将所选命令粘贴到命令行上
- ALT-C -进入所选目录
fzf-tab-completion
在使用tab键补齐时,使用fzf查找。
在macos上还需要安装依赖:
1 | brew install gawk grep |
安装插件:
1 | git clone https://github.com/lincheney/fzf-tab-completion.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/fzf-tab-completion |
zsh-syntax-highlighting
zsh 语法高亮
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
zsh-autosuggestions
zsh基于历史和补齐的推荐。
1 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
git open
在浏览器中打开git项目
1 | git clone https://github.com/paulirish/git-open.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/git-open |
zsh-completion
zsh补齐扩展。
1 | git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions |
shell 配置
iterm2 集成
参考iterm2官方文档安装下载脚本。
1 | # zsh |
然后在.zshrc中增加配置:
1 | test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" || true |
only for macos
proxy alias 设置
1 | proxy="127.0.0.1:7890" |