Zsh Vi-Mode使用手册

Vi 习惯指南: Zsh

环境声明:Arch Linux | Kitty 0.44 | Zsh (Vi-mode) | Neovim v0.11.5 | Hyprland (JaKooLit)

本指南旨在将 HJKL 的肌肉记忆贯穿整个系统:从窗口管理到终端编辑,再到历史回溯。


1. 终端级:Zsh Vi-Mode 核心操作

在终端执行 bindkey -v 后, Zsh 变成了“单行 Vim”。

🔹 模式切换

  • 进入命令模式 (Normal):输入 jk (自定义) 或 ESC
    • 视觉提示:光标变为 方块 █
  • 进入插入模式 (Insert):按 i (前插)、a (后插)、I (行首)、A (行尾)。
    • 视觉提示:光标变为 竖线 |

🔹 移动与快速定位 (Normal Mode)

  • 基础h j k l (左 下 上 右)。
  • 单词w (跳至下个单词头), b (跳至上个单词头), e (跳至单词尾)。
  • 行缘0 (行首), $ (行尾)。
  • 历史翻阅j / k/ 后输入关键词回车。

🔹 极速编辑

  • 删除x (删字符), dw (删单词), dd (清空行)。
  • 修改cw (改单词), C (改至行尾)。
  • 撤销u (Undo)。

2. 跨维度:Kitty + Neovim 联动

通过配置 scrollback_pager,我们可以用 Neovim 的威力来处理终端历史输出。

🔹 历史回溯 (Alt + H)

  1. 按下 Alt + H:当前终端所有输出在一个临时的 Neovim 缓冲区打开。
  2. 搜索:输入 /关键词 快速定位报错信息或日志。
  3. 复制:按 v 选中,按 y 复制(已同步至系统剪切板)。
  4. 退出:输入 :q 瞬间回到直播终端。

🔹 长命令编辑 (Normal Mode -> v)

  1. 在输入复杂命令时,按 jk 进入命令模式。
  2. 按下 v
  3. 在弹出的全屏 Neovim 中编写脚本。
  4. :wq 保存退出,命令自动回填并准备执行。

3. 系统级:Hyprland 窗口管理

利用 Super (Windows 键) 配合 HJKL 实现无感窗口切换。

  • Super + H/J/K/L:在当前工作区切换窗口焦点。
  • Super + Shift + H/J/K/L:物理移动当前窗口的位置。

💡 核心配置备忘 (Configuration Cheat-sheet)

Zsh (~/.zshrc)

1
2
3
4
5
bindkey -v
export KEYTIMEOUT=15
bindkey -M viins 'jk' vi-cmd-mode
bindkey -M vicmd 'k' up-line-or-beginning-search # 带记忆的搜索
bindkey -M vicmd 'j' down-line-or-beginning-search

Kitty (~/.config/kitty/kitty.conf)

1
2
scrollback_pager nvim -c "set signcolumn=no showtabline=0" -c "silent! write! /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - " -c "normal G"
map alt+h show_scrollback

Hyprland (~/.config/hypr/UserConfigs/UserKeybinds.conf)

1
2
3
4
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d

📋 常用快捷键速查表

功能维度 快捷键 动作描述
模式切换 jk 退出插入模式
命令编辑 v 在 Neovim 中编辑当前行
屏幕复制 Alt + H 像编辑文件一样复制终端历史
历史命令 k / j 向上/下翻阅历史
窗口聚焦 Super + HJKL 切换当前工作区窗口
窗口位移 Super + Shift + HJKL 调整窗口布局

Generated by Arch_z Config Reference