Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 说明
  • Vim

  • VSCode

  • Chrome

  • iTerm

    • iTerm-说明
    • iTerm-01-导航
    • iTerm-02-初识 zellij
    • iTerm-03-zellij 高级使用技巧
    • iTerm-复习 -1
    • iTerm-04-初始 zsh-vi-mode
    • iTerm05-zsh-vi-mode 高级使用技巧
    • iTerm-06-zsh 常用插件
    • iTerm-07-zsh 自定义快捷键
    • iTerm-复习 -2
      • 社群讨论
  • mac

  • Obsidian

  • lazygit

  • 学习双拼
  • Vim 技巧

  • 键盘侠
  • iTerm
Henry
2022-07-25
目录

iTerm-复习 -2

# 历史命令

iTerm 自带:

  • ctrl + p/上方向键: 上一个
  • ctrl + n/下方向键: 下一个

Oh My Zsh 自带:

  • ctrl + r

zsh-vi-mode:

  • j/k: 上/下
  • /: 搜索
  • n/N: 上/下

# 使用原生的 vim/vi

  • vv

# 移动

参考 vim 命令

# 插入

参考 vim 命令

# surround

Classic:

  • S" Add " for visual selection(和ys"比更推荐该方法)
  • ys" Add " for visual selection
  • cs"' Change " to ' 修改
  • ds" Delete "

s-prefix:

  • sa" Add " for visual selection
  • sd" Delete "
  • sr"' Change " to '

两种方式切换:如果想使用 s-prefix,则需要在 ~/.zshrc 中配置环境变量:ZVM_VI_INSERT_SURROUND_BINDKEY=s-prefix

# 改键

以 ^ 跳转到行首如何改成 H,$ 跳转到行尾如何改成 L 为例:

# 定义一个执行函数
function jump_end_of_line() {
  zvm_navigation_handler $
}
function jump_start_of_line() {
  zvm_navigation_handler ^
}

function zvm_after_lazy_keybindings() {
  # 当zsh-vi-mode加载时会声明该函数
  zvm_define_widget jump_end_of_line
  zvm_define_widget jump_start_of_line
  # 当监听到对应输入时调用自定义的函数(vicmd是normal模式下,visual是可视化模式下)
  zvm_bindkey vicmd 'L' jump_end_of_line
  zvm_bindkey vicmd 'H' jump_start_of_line
  zvm_bindkey visual 'L' jump_end_of_line
  zvm_bindkey visual 'H' jump_start_of_line
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 复制

该插件默认情况下是无法将内容复制到系统剪切板里的

在 zsh-vi-mode.zsh 中搜索 zvm_vi_yank 在里面添加一行 echo ${CUTBUFFER} | pbcopy

function zvm_vi_yank() {
  zvm_vi_yank
  echo ${CUTBUFFER} | pbcopy
  zvm_exit_visual_mode
}
1
2
3
4
5

之后就可以通过 yy 或选中以后使用 y 复制内容,然后可以在系统其他地方粘贴

# setup

为了规范,我们可以不直接在 ~/.zshrc 中修改环境变量,到 zsh-vi-mode.zsh 中搜索 zvm_config 在 config 函数中写环境变量就可以了。

例如:

function zvm_config() {
  ZVM_LINE_INIT_MODE=$ZVM_MODE_INSERT
  ZVM_VI_INSERT_ESCAPE_BINDKEY=jk
}
1
2
3
4

# Increment and Decrement:

  • ctrl + a
  • ctrl + x

如果我们写了 0 通过 ctrl + a 0 便会递增 ctrl + x 会递减

如果我们写了 true 通过 ctrl + a 会变成 false

如果我们写了 yes 通过 ctrl + a 会变成 no

如果我们写了 != 通过 ctrl + a 会变成 ==

详情看文档 (opens new window)

# zsh-autosuggestions (opens new window): 历史命令自动填充

选择提示的历史命令:

  • 右方向键

# zsh-syntax-highlighting (opens new window): 指令高亮

# autojump (opens new window): 快速跳转路径

使用:

  • j + 模糊的目录:跳转到该路径
  • jo + 模糊的目录:使用 Finder 打开该目录
  • j -s: 查看记录
  • j -i: 增加当前路径的权重
  • j -d: 减少当前路径的权重
  • j -a: 添加路径

# copypath (opens new window): 复制当前路径

使用:

  • copypath

# copyfile (opens new window): 复制文件内容

使用:

  • copyfile

# web-search (opens new window): 搜索

使用:

  • google + 搜索关键字

自定义:

ZSH_WEB_SEARCH_ENGINES=(bl "https://search.bilibili.com/all?keyword=")

  • bl + 搜索关键字

# macos (opens new window): 提供 macos 的实用工具

使用:

  • tab: 新建一个 tab
  • split_tab: 向下分屏
  • vsplit_tab: 向右分屏
  • man-preview: 使用 pdf 查看文档

# widgets

  • zle -la: 查看内置的 widgets
  • zle -N <widget name>: 自定义 widgets

比如清空窗口:

function clear_screen() {
  # do something
  zle clear-session
  # do something
}

zle -N clear_screen

bindkey '\eg' clear_screen
1
2
3
4
5
6
7
8
9

或者:

bindkey '\eg' clear-screen
1

# bindkey

  • bindkey: 可以查看所有的 widgets
  • bindkey <keystroke>: 基于按键查看 widgets
  • bindkey <keystroke> <widget>: 绑定到已经有的 widgets 里面
  • bindkey -s <keystroke> <keystroke>: 把 a 绑定到 b 快捷键上
  • bindkey -M <keymap> <keystroke>: 绑定到具体模式
  • bindkey -r <keystroke>: 删除
  • bindkey -M <keymap> -r <keystroke>: 删除

绑定的按键都是临时的,关闭 iTerm 之后就失效了

keystroke:

  • ^: ctrl
  • \e: opt

keymap:

  • emacs: Emacs emulation
  • viins: Vi mode - INSERT mode
  • vicmd: Vi mode - NORMAL mode (also confusingly called COMMAND mode)
  • viopp: Vi mode - OPERATOR-PENDING mode
  • visual: Vi mode - VISUAL m

# 帮助手册

  • man zshzle
  • man-preview zshzle
  • cat -v: 获取你输入的是什么字

# 社群讨论

崔大的 vimrc 可以分享一下嘛

空的,很少用

emm,那命令行使用 vim 的快捷键映射是在哪里的呢?例如 shift + j = 5j

建议 code ~/.zshrc 使用 vscode 编辑。小规模修改才 vim ~/.zshrc,一般 ctrl + u/d了,小规模修改 不用映射也够了

也不是不行

会在 ob 的时候讲一讲怎么配置 和终端里面配置一样

编辑 (opens new window)
上次更新: 5/27/2023, 1:02:05 PM
iTerm-07-zsh 自定义快捷键
mac-01-Manico

← iTerm-07-zsh 自定义快捷键 mac-01-Manico→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式