1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
zsh shell 入门.md 5.83 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2021-11-21 14:00 . zsh shell 入门

ZSH SHELL 入门

前言

现在比较流行的 shell (命令行),有 bash, fish, zsh 等,其中 fish 有非常好的控制台,用户可以通过网站来配置不同的风格,非常易用,但是有几个缺点,一,速度慢(虽然一般感受不出来),第二,不兼容 bash。很多脚本是基于 bash的,所以不兼容就可能导致一些软件出现这样那样奇怪的问题,这点可能比较不舒服。

zsh 虽然没有 fish 易用,但是它的运行效率貌似更高(个人感觉),而且还能兼容 bash。

功能

  1. 改变路径: 直接输入路径回车
    1. cd -: 按 tab 键显示最近路径
  2. 通配符
    1. (*): 执行文件
    2. (/): 目录
    3. (.): 文件
    4. (@): 链接
    5. (mh-8): 最近 8 小时修改的文件
    6. (md+2): 两天前
  3. 历史记录
    1. 输入关键字,上下箭头可以匹配历史记录出现的命令
  4. 补全:tab 触发,ctrl+n/p/f/b 切换
  5. emacs 快捷键(默认):
    1. ctrl+a 移动光标到行首
    2. ctrl+e 移动光标到行尾
    3. alt+b 将光标向后移动一个词
    4. alt+f 将光标向前移动一个词
    5. ctrl+w 剪切最后一个字
    6. ctrl+u 剪切光标前的所有内容
    7. ctrl+k 剪切光标后的所有内容
    8. ctrl+y 粘贴最后要剪切的东西
    9. ctrl+shift+_ 撤销
  6. vi 快捷键(bindkey -v 或 bash 中 set -o vi)
    1. h 向左移动光标
    2. l 向右移动光标
    3. A 将光标移动到行尾并进入插入模式
    4. 0(零)将光标移动到行首(不进入插入模式)
    5. i 在当前位置进入插入模式
    6. a 在当前位置后进入插入模式
    7. dd 删除行(保存粘贴)
    8. D 删除当前光标位置后的文本(保存粘贴)
    9. p 粘贴已删除的文本
    10. j 在历史命令中向上移动
    11. k 在历史命令中向下移动
    12. u 撤消

vim 快捷键参考

vim 是一个功能强大的编辑器,但是它和一般的编辑器不同,有不同的模式,在不同模式下有不同的快捷键,所以需要记忆熟练,否则难以操作。

shell 本身也是支持 vim 的编辑模式的,这两者可以一定程度的通用,虽然命令行只有一样,长度也不多,但是掌握 vim 模式还是对效率有所提高,同时也因为 emacs 编辑器很少人用了。

  1. 进入命令行模式:
    1. ESC | 进入命令行模式
  2. 进入输入模式:
    1. i | 在光标前插入
    2. a | 光标后插入
    3. I | 在行的开头插入
    4. A | 在行的结尾插入
    5. c | Change text of a movement command (见下文).
    6. C | 剪切到行尾 (同 c$)
    7. cc 或 S | 剪切整行 (同 0c$)
    8. s | 删除光标处文本,并进入插入模式。 (同 c[SPACE])
    9. r | 修改光标处文本 (没有离开命令样式)
    10. R | 进入替换模式
    11. v | 先执行命令,再使用编辑编辑命令。使用 $VISUAL 或 $EDITOR 变量定义编辑器, 编辑器默认 vi 。
  3. 移动 (命令模式下):
    1. h | 按字左移
    2. l | 按字右移
    3. w | 按词右移
    4. b | 按词左移
    5. W | 以空白字符按词右移(比如 ab a-b , W 不会移动到 - 上,而 w 会)
    6. B | 以空白字符按词左移
    7. e | 移动光标到词尾部
    8. E | 以空白符移动光标到词尾
    9. 0 | 移动光标到行首
    10. ^ | 移动光标到行首不是空白符
    11. $ | 移动光标到行尾
    12. % | 移动到左括号或右括号
  4. 字符查找 (也是移动命令):
    1. fc | 右移到字符 c .
    2. Fc | 左移到字符 c .
    3. tc | 右移到字符 c 的左边
    4. Tc | 左移到字符 c 的右边
    5. ; | 重做查找
    6. , | 反方向重做查找
    7. | | 移到第 n 列 (如 3| 移到第 3 列)
  5. 删除命令:
    1. x | 删除当前光标所在字符.
    2. X | 删除光标前的一个字符.
    3. d | Delete text of a movement command (see above).
    4. D | 删除到行尾 (同 d$).
    5. dd | 删除行 (同 0d$).
    6. CTRL-w | 向左删除单词 (编辑模式下)
    7. CTRL-u | 删除到进入编辑模式时光标位置
  6. 撤销、重做、复制、粘贴:
    1. u | 单步撤销
    2. U | 撤销所有
    3. . | 重做
    4. y | Yank a movement into buffer (copy).
    5. yy | Yank the whole line.
    6. p | 在光标处粘贴
    7. P | 在光标前粘贴
  7. 历史记录:
    1. k | 上一条命令
    2. j | 下一条命令
    3. G | 回来当前命令
    4. /string 或 CTRL-r | 搜索历史命令(/string 用于命令模式下, ctrl-r 用于输入模式下)
    5. ?string 或 CTRL-s | 搜索历史命令(Note that on most machines Ctrl-s STOPS the terminal | output, change it with `stty' (Ctrl-q to resume)).
    6. n | 下一条历史匹配
    7. N | 上一条历史匹配
  8. 自动完成:
    1. TAB 或 = 或 | 列出所有可能(TAB 用于输入模式)
    2. CTRL-i |
    3. * | Insert all possible completions.
  9. 其他:
    1. ~ | 切换当前光标处文本的大小写,并右移光标
    2. # | 注释当前命令并把其放入历史
    3. _ | Inserts the n-th word of the previous command in the current line.
    4. 0, 1, 2, ... | Sets the numeric argument.
    5. CTRL-v | Insert a character literally (quoted insert).
    6. CTRL-r | Transpose (exchange) two characters.

参考

  1. Bash 和 Zsh 开启 vi-mode: https://www.cnblogs.com/daysme/p/9402792.html
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助