找回密码
 立即注册
查看: 2328|回复: 0

[简易教程] iTerm2笔记 mac终端删除左右单词快捷键

[复制链接]
发表于 2018-12-25 14:49 | 显示全部楼层 |阅读模式
本文是 iTerm2 的使用笔记,不定期更新。
1 注释说明
  • 对于 Preferences 的修改,=> 表示需要切换选项卡,-> 表示在同一选项卡内
2 参考https://www.iterm2.com/documentation.html
https://marcjenkins.co.uk/drop-down-terminal-with-iterm2/
https://www.zhihu.com/question/27447370
3 杂301 如何随时随地一键调用 Quake-like iTerm2首先声明:由于 Mac OS 本身对窗体「最大化」的设计,某个窗体最大化后似乎就独占这一屏幕了,因此貌似没法实现在已经最大化窗口的那个桌面上调用 iTerm2。
主要更改 Preferences 中的 2 个地方:(写作本文时,iTerm2 版本号为3.1.4)
  • Keys


    • Keys -> Hotkey -> Show/hide all windows with a system-wide hotkey:如图


      iterm2-hotkey
  • Profiles


    • Profiles 点左下方的「+」创建一个新的 Profile,选择 Window,然后修改 Style 为 Full-Width Bottom of Screen 或者 Full-Width Top of Screen,然后修改左下角 Other Actions... 为 Set as Default。此后,退出 iTerm2 当前终端窗口,新建一个 iTerm2 窗口,以后就能用 你在前面设置的热键 Hotkey 来调用了:如图


      iterm2-profile
其他的 Profiles 设置备份
  • General
    • Working Directory
      • Reuse previous session's directory:每次打开新的标签页、切割出新的 panel 时,重用切割来源的目录位置。例如我在某个标签页中切换到了 ~/Documents,此时新建 tab,则新的 tab 打开时就在 ~/Documents 下(若不如此修改,默认打开时是在 ~ 下即 Home directory):如图


        iterm2-working-directory
  • Text
    • 在使用 agnoster 作为 zsh 主题的情况下,更改字体为 Font -> Change Font -> All Fonts -> 12 pt Meslo LG S DZ Regular for Powerline
  • Session
    • Closing -> Always Prompt before closing
      • 注:Prompt before closing if there are jobs running besides 似乎不起作用……例如我添加了 vim 或 top 后,该关还是关,不知道是不是哪里出了问题。。。
302 显示命令执行时间菜单栏 View -> Show Timestamps



iterm2-show-time-stamps

303 使用正则表达式搜索在终端窗口使用 cmd+f 进行搜索时,点选搜索框左侧的下拉三角号,可以选择使用正则表达式搜索:



iterm2-regular-expression-search-regex

304 无鼠标模式复制文本打开 cmd+f 搜索文本,高亮光标标记了目标文本后,按 Tab 向右选择文本,按 Shift+Tab 向左选择文本,文本同时被复制到了搜索框中;选择足够的文本后,cmd+A 然后 cmd+c 即可完成复制
305 使用 emacs 模式进行行命令编辑想在 iTerm2 中使用 emacs 模式进行行编辑如光标前单词删除、光标移动,需要使用 Alt 时,一直有问题;后来找到了该帖子,修改了 Preferences => Profiles -> [你自己的Profile] -> Keys,把其中的右 Option 键改为了 Meta 键,左 Option 改成了 Esc+。然后就能用左 Options 即普通键盘上的左 Alt 来使用普通键盘上的 Alt 了。



修改Alt键

关于 shell 行编辑的快捷键,见 MIT 的一个文档,摘录常用的几个:
C- 表示 Ctrl 开头,M- 表示 Alt 开头
  • 位置
    • 行跳转
      • C-a:跳转到行首
      • C-e:跳转到行尾
    • 单词跳转
      • M-b:向光标左侧(行首方向)跳转 1 个单词
      • M-f:向光标右侧(行尾方向)跳转 1 个单词
  • 编辑
    • 行编辑
      • C-k:删除至行尾
      • C-w:删除光标左侧(光标与行首之间)最近的 1 个单词
      • M-d:删除光标右侧(光标与行尾之间)最近的 1 个单词
tip:
  • C-a 中的 a 可理解为 stArt 中的 a;C-e 中的 e 可理解为 End 中的 e
  • C-k 中的 k 可理解为 Kill 中的 k
  • C-w 和 M-d 的位置正好一组在左,一组在右,可对应理解为删除左侧还是删除右侧
306 使用 vi 模式进行行命令编辑
如果你是原生 Mac 键盘党,这段可以无视;如果你是外接标准键盘党(即键盘上有功能键区 Insert/Delete/Home 等 6 个键),请往下看
改成 vi-mode 方式后,发现在 oh-my-zsh + iTerm2 + vi-mode 条件下进行行编辑的话,vi 模式快捷键不太方便,主要是说按 Home/End/Delete 等键总是会出问题。看到这个issue所说,好像是键位绑定问题。搜到了一个键位绑定修改方案
# 修改键位绑定的代码# 来源:https://bbs.archlinux.org/viewtopic.php?pid=201976#p201976# 原始可能是:http://zshwiki.org/home/zle/bindkeysautoload zkbd[[ ! -f ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE ]] && zkbdsource ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE[[ -n ${key[Backspace]} ]] && bindkey "${key[Backspace]}" backward-delete-char[[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode[[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line[[ -n ${key[PageUp]} ]] && bindkey "${key[PageUp]}" up-line-or-history[[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char[[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line[[ -n ${key[PageDown]} ]] && bindkey "${key[PageDown]}" down-line-or-history[[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-search[[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char[[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-search[[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char有几个坑,记录一下:
  • 在需要绑定 F11 时我发现总是展示桌面,无法输入 F11。于是我在想可能是系统快捷键绑定了。于是在「系统偏好设置」->「键盘」中的「快捷键」->「调度中心」找到了 F11,暂时勾选掉该选项,于是能够输入 F11 了



  • 暂时取消系统级F11快捷键
  • 如果想绑定 Meta Key,见「#305 使用 emacs 模式进行行命令编辑」;如果不想绑定 Meta Key,按空格跳过
  • 在绑定 insert 时,不知为啥,一直没法输入该键。但后来注意到一句话 Press Space to skip to the next key.,因此就决定按空格跳过该键的映射(反正这个键位映射主要是给命令行用的,而命令行中要做替换也不需要用到 insert——启用了 vi-mode,用 Esc 然后 R 就行了阿~)
  • 提醒:
    • 不要提前输入。例如在映射 F1 时就按 F1,等到跳出要求映射 F2 时再按 F2,而不要连续按 F1、F2。否则系统会认为 F1+F2 这个(顺序?)组合键才是 F1
    • 在发现映射错误时,如果还没映射完,那就等 10 秒,程序会自己停止;然后重新 source ~/.zshrc 就能重新调用该 zkbd 进行键盘映射了;如果已经映射完,想改,那么删除 ~/.zkbd 文件夹下的对应配置文件(类似 xterm-256color-apple-darwin17.0 字样),然后重新 source ~/.zshrc 即可
0 八卦【八卦01】由于 Mac OS 自带的 terminal 没有简单的方法实现随时随地从屏幕上方「下拉」/「上拉」调用的功能(具体效果类似 Guake),我找到了 iTerm 2。虽然还是尽可能想避免非三平台通用的软件,不过权衡之后我觉得随时随地调用终端这件事更重要,至于过分依赖单平台特用的软件这种问题……后面具体使用时再看吧。
【八卦02】至于为什么不用 Visor,那是因为它已经切换到 TotalTerminal 了,而后者……已经弃坑了。



作者:苏尚君
链接:https://www.jianshu.com/p/5a26223f8cb0
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 11:19 , Processed in 0.128503 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表