zsh终端和oh-my-zsh配置
基于Ubuntu on WSL2的zsh终端功能完善和美化。

zsh终端和oh-my-zsh配置


一、Ubuntu端

1. 安装zsh和tmux

$ sudo apt-get install zsh tmux

2. 安装Powerline Fonts字体

$ sudo apt-get install fonts-powerline

3. 安装Oh My Zsh

注:需要挂代理!

$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

或者

$ wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
$ sh install.sh

升级:

$ omz update

4. 安装插件

  • zsh-autosuggestions
$ git clone git://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/plugins/zsh-autosuggestions

注:如字看不清,在插件目录下找到 autosuggestions.zsh 文件,找到并修改ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=11'

  • zsh-syntax-highlighting
$ git clone git://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/plugins/zsh-syntax-highlighting

5. 配置文件

~/.zshrc文件

  • 主题设为"agnoster"
  • 开启插件
plugins=(
    tmux
    git
    z
    zsh-autosuggestions
    zsh-syntax-highlighting
)
  • 保留原 .bashrc 文件的启动配置:

~/.zshrc 文件开头处,添加

    source ~/.bashrc

注:如 .bashrc 内容在启动报错,屏蔽掉相应不兼容指令。

  • oh my tmux 快捷键用vim逻辑

~/.zshrc 文件开头处,添加

    export EDITOR="vim"

6. 安装Oh my tmux

之前必须已安装awkperlsed;且 $ echo $TERM 必须为 xterm-256color

$ mkdir ~/.config/tmux
$ cd ~/.config/tmux
$ git clone https://github.com/gpakosz/.tmux.git .
$ ln -s ./.tmux.conf ./tmux.conf
$ cp ./.tmux.conf.local ./tmux.conf.local
  • tmux.conf 为系统配置文件,用户一般不修改
  • tmux.conf.local 为用户配置文件,用户定制在这里

7. 设置Oh my tmux

修改 tmux.conf.local

  • tmux_conf_theme_*_separator_* 底栏分隔符号
  • tmp插件安装tmux-cputmux-resurrecttmux-continuum

二、Windows端

1. 安装Powerline Fonts字体

回到Ubuntu,下载:

$ cd /tmp
$ git clone https://github.com/powerline/fonts.git --depth=1
$ cd /tmp/fonts

拷贝文件夹到windows目录下;windows下,管理员运行Windows PowerShell;到fonts目录下,运行:

> Set-ExecutionPolicy Bypass
> .\install.ps1
> Set-ExecutionPolicy Default

2. Windows Terminal字体设置成:XXX for powerline

3. Windows Terminal配色设置

配色大全网站:https://github.com/mbadolato/iTerm2-Color-Schemes

网站内windowsterminal/目录下,拷贝配色文件内容,打开Windows Terminal的settings.json文件,粘贴在 (“schemes”)相应位置,注意添加分隔符逗号!

4. VSCode配置字体,用以支持powerline特殊字符。

配置文件中添加 "editor.fontFamily": "'Ubuntu Mono derivative Powerline'",

5. VSCode修改内置terminal配色:

VSCode Terminal配色网站:https://glitchbone.github.io/vscode-base16-term/

拷贝配色内容,打开VSCode的settings.json文件,粘贴在"workbench.colorCustomizations": {}内。

三、使用

1. git快捷键(zsh git插件)

简写 命令
g git
gst git status
gl git pull
gup git pull --rebase
gp git push
gd git diff
gdc git diff --cached
gdv git diff -w "$@" | view
gc git commit -v
gc! git commit -v --amend
gca git commit -v -a
gca! git commit -v -a --amend
gcmsg git commit -m
gco git checkout
gcm git checkout master
gr git remote
grv git remote -v
grmv git remote rename
grrm git remote remove
gsetr git remote set-url
grup git remote update
grbi git rebase -i
grbc git rebase --continue
grba git rebase --abort
gb git branch
gba git branch -a
gcount git shortlog -sn
gcl git config --list
gcp git cherry-pick
glg git log --stat --max-count=10
glgg git log --graph --max-count=10
glgga git log --graph --decorate --all
glo git log --oneline --decorate --color
glog git log --oneline --decorate --color --graph
gss git status -s
ga git add
gm git merge
grh git reset HEAD
grhh git reset HEAD --hard
gclean git reset --hard && git clean -dfx
gwc git whatchanged -p --abbrev-commit --pretty=medium
gsts git stash show --text
gsta git stash
gstp git stash pop
gstd git stash drop
ggpull git pull origin $(current_branch)
ggpur git pull --rebase origin $(current_branch)
ggpush git push origin $(current_branch)
ggpnp git pull origin $(current_branch) && git push origin $(current_branch)
glp _git_log_prettily

2. z跳转(zsh z插件)

zsh会自动记录cd访问过的目录,通过 $ z 目录名 就可以直接进行目录跳转,且支持模糊匹配和自动补全。

3. tmux快捷键(zsh tmux插件)

简写 命令
ts tmux new-session -s
tl tmux list-sessions
ta tmux attach -t
tad tmux attach -d -t
tksv tmux kill-server
tkss tmux kill-session -t

四、Tmux使用

  • Pane:程序运行在Pane。每个Pane隶属于在一个Window。

  • Window:多个pane组成一个window。每个Window至少有一个active pane。

  • Session:可attach和detach的单元。用户一时只能操作一个session;多用户可以同时attach同一个session。session可包含多个windows;至少包含一个current window。

    <prefix> 指令前缀 Ctrl + a 或者 Ctrl + b

    <prefix> : 命令行模式

    <prefix> ? 帮助;<prefix> m 开启/关闭鼠标

    $ tmux list-keys 列出所有快捷键,及其对应的 Tmux 命令

    $ tmux list-commands 列出所有 Tmux 命令及其参数

1. Pane操作

快捷键 功能
<p> " 或 - 划分上下两个pane。
<p> % 或 S+- 划分左右两个pane。
<p> x 关闭当前窗格。
<p> <arrow> 或 hjkl active切换pane。
<p> C+<arrow key> 或 S+hjkl 按箭头方向调整窗格大小。
<p> { 当前窗格左移。
<p> } 当前窗格右移。
<p> C+o 当前窗格上移。
<p> A+o 当前窗格下移。
<p> ! 或 + 将当前窗格拆分为一个独立窗口。
<p> z 当前窗格全屏显示,再使用一次会变回原来大小。
<p> q 显示窗格编号。

2. Window操作

快捷键 功能
<p> c 创建一个新Window,状态栏会显示多个窗口的信息。
<p> & 关闭当前窗口
<p> Tab 切换到上一次的Window。
<p> <number> 切换到指定编号的Window,其中的是状态栏上的窗口编号。
<p> C+h/C+l 按照状态栏顺序切换Windows。
<p> w 从列表中选择Window。
<p> , 重命名当前Window。

3. Session操作

快捷键 功能
<p> C+c 新建一个Session
<p> d 从当前session退出detach,但是session和里面的进程仍然在后台运行。
<p> s 从列表中选择切换Session。
<p> $ 重命名当前Session。
  • $ tmux new -s <session-name>
  • $ tmux detach
  • $ tmux ls
  • $ tmux attach -t <session-name>
  • $ tmux kill-session -t <session-name>

最后修改于 2024-02-24