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 selectioncs"'
Change " to ' 修改ds"
Delete "
s-prefix:
sa"
Add " for visual selectionsd"
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
}
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
}
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
}
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
会变成 ==
# 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
: 查看内置的 widgetszle -N <widget name>
: 自定义 widgets
比如清空窗口:
function clear_screen() {
# do something
zle clear-session
# do something
}
zle -N clear_screen
bindkey '\eg' clear_screen
2
3
4
5
6
7
8
9
或者:
bindkey '\eg' clear-screen
# bindkey
bindkey
: 可以查看所有的 widgetsbindkey <keystroke>
: 基于按键查看 widgetsbindkey <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 的时候讲一讲怎么配置 和终端里面配置一样
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05