现代终端工作流使用说明
日常入口
打开 Ghostty 后,默认进入 zsh,并自动加载:
- starship prompt
- zsh vi mode
- fzf 快捷搜索
- zoxide 智能跳转
- eza / bat / fd / ripgrep 别名
- tmux / k8s / lazygit 快捷命令
推荐日常进入方式:
tn work已有 session:
tls
ta work对应原始命令:
tmux new -s work
tmux ls
tmux attach -t workzsh Vi Mode
当前 zsh 使用 vi mode。
进入 normal mode:
Esc
Ctrl+[
jj回到 insert mode:
i
a
A
I常用 normal mode 操作:
h 左移
l 右移
0 到行首
$ 到行尾
w 下一个词
b 上一个词
x 删除当前字符
dd 清空当前命令行
u 撤销Starship 会用提示符方向显示模式:
❯ insert mode
❮ normal mode如果看不到变化,用这个测试:
输入 abc
按 Esc 或 jj
按 h光标左移说明已经进入 normal mode。
tmux
创建 session:
tn work列出 session:
tls进入 session:
ta work核心快捷键:
Ctrl-a d detach session
Ctrl-a | 左右分屏
Ctrl-a - 上下分屏
Ctrl-a h/j/k/l 切换 pane
Ctrl-a Shift-h/j/k/l resize pane
Ctrl-a m 最大化/恢复 pane
Ctrl-a r 重新加载 ~/.tmux.conf
Alt-h 上一个 window
Alt-l 下一个 windowtmux copy mode:
Ctrl-a [
v 开始选择
y 复制并退出 copy mode注意:
- tmux prefix 是
Ctrl-a。 - 如果需要把真实
Ctrl-a发送给 shell,用Ctrl-a a。 - 已经打开的 tmux pane 不会自动加载新的
.zshrc;改配置后在 pane 里执行source ~/.zshrc,或新开 pane/window。 - 改了
.tmux.conf后执行Ctrl-a r。
文件浏览
常用命令:
ls
ll
la
tree实际映射:
alias ls="eza --icons --group-directories-first"
alias ll="eza -lah --icons --group-directories-first"
alias la="eza -a --icons --group-directories-first"
alias tree="eza --tree --icons"建议用法:
ll
tree -L 2
eza --git --long --icons文件查看
cat 已映射到 bat:
cat README.md
bat package.json
bat -n path/to/file如果需要原始 cat 行为,例如检查按键编码:
/bin/cat -v按 Esc 或 Ctrl+[ 应显示:
^[如果显示 1;5u,说明 Ghostty 没有把 Ctrl+[ 按 legacy ESC 发送。
搜索
文本搜索:
rg "keyword"
rg "TODO|FIXME" src
rg -n "functionName" .文件搜索:
fd README
fd "\\.yaml$"
fd Dockerfile如果需要系统原始命令:
/usr/bin/grep pattern file
/usr/bin/find . -name '*.md'fzf
fzf 在真实交互式终端中自动初始化。
常见快捷键:
Ctrl-r 搜索历史命令
Ctrl-t 搜索文件并插入命令行
Alt-c 搜索目录并 cd如果快捷键没有生效:
bindkey | rg 'fzf|\\^R|\\^T'注意:配置会把仍是 self-insert 的 Ctrl+字母 改成 undefined-key,但不会覆盖已经被 fzf 等工具占用的快捷键。
Git
进入 git 仓库后:
lg命令行 diff:
git diff | deltaKubernetes
查看当前 context:
kctx切换 context:
kx切换 namespace:
kn打开 k9s:
k9s查看日志:
stern app-name
stern app-name -n namespacekubectl 快捷别名:
k get pods
k get deploy -A
k logs -f deploy/app-name系统观察
进程和资源:
top
btm磁盘占用:
du
dust
dust -d 2如果需要系统原始 du:
/usr/bin/du -sh *JSON / YAML
JSON:
jq '.' file.json
jq '.items[] | .metadata.name' pods.jsonYAML:
yq '.spec.template.spec.containers[].image' deploy.yaml主题切换
Ghostty 当前主题在:
~/.config/ghostty/config查看可选主题:
ghostty +list-themes修改:
theme = GitHub Dark Dimmed验证:
ghostty +validate-config --config-file=$HOME/.config/ghostty/configbat 当前主题在:
~/.config/bat/config查看可选主题:
bat --list-themes修改:
--theme="Catppuccin Mocha"配置重新加载
zsh:
source ~/.zshrctmux:
Ctrl-a r或:
tmux source-file ~/.tmux.confGhostty:
Cmd+Shift+,或重启 Ghostty。
故障排查
检查 zsh vi mode:
bindkey -lL main
bindkey -M viins 'jj'
bindkey -M viins '^['
echo $KEYTIMEOUT期望:
bindkey -A viins main
"jj" vi-cmd-mode
"^[" vi-cmd-mode检查 Ghostty ESC:
/bin/cat -v按 Esc / Ctrl+[,期望:
^[检查 starship wrapper 是否递归:
echo ${widgets[zle-keymap-select]-unset}期望:
user:starship_zle-keymap-select如果出现:
starship_zle-keymap-select-wrapped:1: maximum nested function level reached处理:
source ~/.zshrc仍不正常就开新 shell;当前配置已经避免重复 source 后 wrapper 继续套娃。
检查 tmux 中为什么不生效:
tmux show-environment -g | rg 'STARSHIP|TERM|SHELL|KEYTIMEOUT'
tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{pane_current_command} #{pane_tty}'说明:
- tmux 没有单独的 zsh 配置。
- 但 tmux server 会保留启动时环境变量。
- 已有 pane 里的 zsh 不会自动读取新的
.zshrc。 - 新开 pane/window 或执行
source ~/.zshrc才会生效。
检查命令是否被 alias:
type cat
type grep
type find例如 cat 当前是 bat,排查原始终端输入时用 /bin/cat -v。