LINUX 终端神奇ZSH插件管理--智能提示;再也不用一个一个字符敲了

萌生想法

  • 作为一名喜欢折腾的程序员,我选择 mac 作为主力机 , linux 作为测试机 , windows 作为备用机的工作搭配组合。而 maclinux 本出生一家他们都有终端操作的场景。而 terminal 里我选择 oh-my-zsh 最为解释器工具。关于 oh-my-zsh 的安装配置入门这里简单介绍,今天将焦点着重放到它的一个智能提示插件上 zsh-autosuggestions

接入插件

  • 首先我们通过 github 安装 zsh , 然后将 zsh-autosuggestions 放到 custom/plugins目录下
shell 复制代码
git clone https://github.com/robbyrussell/oh-my-zsh ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
chsh -s $(which zsh)
  • 只需要上述几步即可完成插件的安装。安装完成之后我们在 ~/.zshrc 中引入 zsh-autosuggestions 即可。 source ~/.zshrc 刷新下环境变量。

功能使用介绍

提示

  • 上面接入 zsh-autosuggestions 插件后我们在敲入命令后就会在历史命令中查找匹配项,并进行高亮提示。比如在重启zsh后我敲过 java -version , 那么当我再次敲入 ja 这两个字符时他就会匹配到 java -version 这个命令。
  • 这个功能简直太舒服了,试想想我们经常会在终端敲很长串的东西,有的时候命令很长而且是别处 copy 过来的。下次再执行我们就忘记了,又或者有的时候我们敲了很多过滤命令来检测日志输出,如果重新敲一遍的话太浪费时间了。用了他就很方便。
  • 上面只是提示出来并通过不同的背景色提示出来,想要真正的显示该命令我们还需要通过键盘上的 方向键右键 进行选择 。
  • 说实话我觉得 zsh-autosuggestions 默认的这种提示已经很好了。能够提高平时的工作效率,这套默认的打法我也用了很久了。直到我翻开了官方的 README.md 文档。

zsh-autosuggestions 能够像鱼一样快速且无感根据你的输入进行智能提示。

  • 上面演示我们是通过 来进行使用提示词的。这里的 zsh-autosuggestions 中官方称之为 widget (组件) 。
  • 官方提供了大概7个支持自定义绑定快捷键的小组件功能
序号 指令 功能
1. autosuggest-accept 使用当前提示
2. autosuggest-execute 使用并执行当前提示命令
3. autosuggest-clear 清空当前提示词
4. autosuggest-fetch 即使提示功能被禁用了,也要获取提示词
5. autosuggest-disable 禁用提示
6. autosuggest-enable 开启提示
7. autosuggest-toggle 开启提示/禁用提示
  • 我的编辑器使用的是 neovim , 它的主旨就是减少我们手指在键盘上的挪动区域, 然而为了使用 zsh-autosuggestions 的提示词我该必须移动到方向键,这点我觉得很不舒服。有了上面的小组件功能,那么我可以自定义在我的配置文件中。 官方也表示我们可以将自定义的配置文件放在 custom/ 文件夹下最好命名为 config.zsh , 不过经我测试使用默认的example.zsh 也是可以的。
shell 复制代码
bindkey '^ ' autosuggest-accept
  • 只需要上面一段配置放在 custom/example.zsh 文件中重启zsh 既可实现通过 Ctrl + SPACE 来选择建议词了。 这样避免了我们手指在键盘上大幅度移动了。

策略

  • 上面我提到 zsh-autosuggestions 的 默认提示已经很好了,完全符合我们平时的需求。但那仅仅是他的一半的功能,上文我们了解如何定制我们小组件快捷键。下面我要讲的是如何配置他的建议词生成策略。
序号 策略 场景
1 history 该策略也是 zsh-autosuggestions 默认的策略。基于历史命令根据你输入的词根进行分析推荐符合的命令
2 completion 根据 Tab 补全策略来生成建议命令 。 这种就无须依赖历史命令了
3 match_prev_cmd 和 history类似 , 但是他主要从历史命令和最近执行的命令中筛选推荐词。 因为需要记录最近执行的命令所以当 HIST_IGNORE_ALL_DUPS 或者 HIST_DUPS_FIRST 开启是该策略就无法正常使用了。
  • 经过使用我目前使用的是前两种策略,这也是官方推荐的策略。该策略也是按顺序排序,前一个没有获取到推荐词则后一个生效。
shell 复制代码
ZSH_AUTOSUGGEST_STRATEGY=(history completion)

保护自己

  • 有的时候我们会复制大量文本执行。比如有的时候在终端执行接口需要携带登录token。 往往token是很长很大的内容。这个在历史记录里如果被检测关联那么无疑对 buffer 缓冲区造成很大压力。我们可以通过 ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE 设置上限大小。
shell 复制代码
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE =20

禁用提示

  • 智能提示是 zsh-autosuggestions 的亮点,往往亮点太锋芒也是其缺点。有些命令我们不希望他进行提示。我们就可以设置 ZSH_AUTOSUGGEST_COMPLETION_IGNORE
shell 复制代码
ZSH_AUTOSUGGEST_COMPLETION_IGNORE = ("git *")

总结

  • 在巨人肩膀上稍微做点改动都是香的 , 剩下就是绑定快捷键了。关于vim 下的快捷键也是很多模式,这个以后再说。
shell 复制代码
ZSH_AUTOSUGGEST_COMPLETION_IGNORE=("git *")
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
bindkey '^ ' autosuggest-accept
bindkey '\eq' autosuggest-execute
相关推荐
三天不学习6 分钟前
C# 中的记录类型简介 【代码之美系列】
后端·c#·微软技术·record·记录类型
任小永的博客32 分钟前
VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)
后端·python·django
凡人的AI工具箱35 分钟前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
凡人的AI工具箱1 小时前
每天40分玩转Django:实操图片分享社区
数据库·人工智能·后端·python·django
虾稿1 小时前
[手机Linux] 七,NextCloud优化设置
linux·运维·服务器
首发运维1 小时前
centos 释放系统预留内存并关闭Kdump服务
linux·运维·centos·linux操作系统问题
新子-存在了1 小时前
linux中 mysql备份
linux·运维·mysql
最后一个bug1 小时前
rt-linux中使用mlockall与free的差异
linux·c语言·arm开发·单片机·嵌入式硬件·算法
ZHOUPUYU1 小时前
VMware虚拟机超详细安装Linux教程(最新版)
linux·运维·服务器·windows·微软·centos·虚拟机
初级代码游戏1 小时前
关于linux的ld.so.conf.d
linux·运维·服务器