灰常牛逼的命令行备忘录 navi

1. navi命令简介

1.1 navi命令简介

命令行是非常高效的工具,但一个很常见的现象是,很多命令行过一段时间就容易忘。举个栗子,如果我们常用 git 命令行管理代码、利用 conda 命令管理开发环境,如果过一段时间没用了,那么你还记得如何用 git 将本地代码同步到 GitHub,还记得如何用 conda 命令删除一个本地环境吗?

当然,我们可以在网上搜索一下,也能快速找到答案,但总之还是挺不方便的。我们常见的做法是,将容易忘记的命令行写到笔记中去,忘了再查就是。但现在,有一个新的开源项目 navi,它提供了一个交互式的备忘录。

可以说,不用做笔记、不用查 History,navi 允许你查阅所有的备忘录并执行对应的命令,我们再也不用担心忘记命令行了。

1.2 navi命令特性

  • 通过给定关键字或文字描述,更便捷地查找命令
  • 如果作为长命令的辅助部分,查找后的结果也可以直接复制粘贴到主命令
  • 命令行使用习惯或备忘录可以与其它人共享
  • 该工具也能实现命令行的自动补全

1.3 参考文档

https://url.cn/5pyiQLg

https://url.cn/5EE2Ejc

https://mp.weixin.qq.com/s/OOtzPgilCRos_7q8GqwvZQ

2. navi命令安装

2.1 先安装fzf

  1. [root@navi ~]# git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
  2. [root@navi ~]# ~/.fzf/install #一路按y
  3. [root@navi ~]# . ~/.bashrc

2.2 再安装navi

  1. [root@navi ~]# git clone --depth 1 http://github.com/denisidoro/navi /opt/navi
  2. [root@navi ~]# cd /opt/navi
  3. [root@navi navi]# make install
  4. scripts/install

2.3 如果通过ssh每次访问都需要重新source一下,更改bash

  1. [root@navi ~]# vim ~/.bash_profile
  2. [root@navi ~]# tail -3 ~/.bash_profile #在末尾加上此三行
  3. if test -f .bashrc ; then
  4. source .bashrc
  5. fi

2.4 即可使用navi命令

  1. [root@navi ~]# navi

2.5 navi命令简介

2.5.1 默认情况下,选中的命令会直接执行。如果你只想将选中的命令输入到命令行上,你可以加上 --print 选项。

  1. navi --print

2.5.2 你也可以在 navi 命令后直接加入 query 子命令来预先过滤要输出的命令结果。

  1. navi query <cmd>

2.5.3 如果你想查找一些命令的常用语法,你也可以使用 search 子命令来从在线仓库中下载对应的备忘清单。

  1. navi search <cmd>

3. 自定义备忘录

3.1 navi 所使用的备忘清单都是以 .cheat 为后缀的一些文件,navi 安装完后,默认包括了以下这些备忘清单。

https://github.com/denisidoro/navi

3.2 navi的自定义速查表

  • navi可以在后面加入search来快速查找命令,也可以直接输入navi并回车,进入界面后再查找。
  • 如果你以为navi只有这点本事就完全错了,navi之所以一上线就如此受欢迎,主要原因是它强大的自定义功能。而且自定义注释是支持中文的!
  • 原本的navi项目自带7个速查表,远远不够用。没关系,我们可以自己写一份速查表,放在navi速查表的路径下。

3.2.1 要实现此功能,我们可以用 --dir 参数将自己定义的备忘录 ( .cheat 文件) 传递给 navi 使用。

  1. navi --dir "/folder/with/cheats"

3.2.2 如果你觉得每次都通过 --dir 参数过于麻烦,你也可以通过环境变量来进行设置。

  1. export NAVI_PATH="/folder/with/cheats:/another/folder"

3.2.3 navi自定义备忘录规则

  • 可以直接把我们的备忘录文件夹添加到 Bash 环境中。机器之心做了更简单的一个操作,直接查找该工具的安装目录,然后手动删增备忘录,我们的发现这也是可以的。/opt/navi/cheats/路径下就能找到默认备忘录。
  • 当然,我们是要把以前的笔记做成.cheat 纯文本的,它的用法也不难,只不过要实现补全或带参数的命令,还是需要一些特殊的语法。如下是一个标准的.cheat 文件:

3.2.4 cheat 语法主要有以下几点:

  • 以「%」开头的行包含了特定的 Tag,也就是说上图「git」会作为标签加到该文件所有命令行最后;
  • 以「#」开头的行描述了该命令行的用法;
  • 以「$」开头的行应该为给定参数生成建议值;
  • 其它所有非空行应该都为可执行命令行。

3.2.5 我们来看一个官方给出的 .cheat 文件的示例内容

  1. % git, code
  2. # Change branch
  3. git checkout <branch>
  4. $ branch: git branch | awk '{print $NF}'

灰常牛逼的命令行备忘录 navi的更多相关文章

  1. 命令行备忘录 cli-memo

    前言 有时候想用一个简洁点儿的备忘录,发现没有简洁好用的,于是就想着开发一个,秉着简洁 的思想,所以连界面都没有,只能通过命令行来操作(尽可能的将命令简化).设计的时候 借鉴了git分支的思想,每个备 ...

  2. IntelliJ IDEA 15款 神级超级牛逼插件推荐(超赞,谁用谁知道)

    满满的都是干货  所有插件都是在 ctrl+alt+s 里的plugins 里进行搜索安装 1.CodeGlance 代码迷你缩放图插件 2. Codota 代码提示工具,扫描你的代码后,根据你的敲击 ...

  3. Shell 命令行求两个文件每行对比的相同内容

    Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...

  4. 七牛 qshell 全命令实践

    七牛API服务的命名行测试工具,参考文档 七牛开发者中心 命令行工具(qshell) 实践目的 安装 account 设置ak.sk stat 查看文件状态 buckets/listbucket/do ...

  5. csvkit---python一个牛逼到不行的csv处理库

    先吐槽一下:不管是百度还是谷歌,查来查去除了官方文档之外就没有任何可以借鉴的例子,虽然官方文档写的挺好的.但是我一直以为是在python语言的方式运行的,结果是以命令行的方式运行的,搞得我还以为这个库 ...

  6. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  7. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  8. react.js 之 create-react-app 命令行工具系统讲解

    react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app ...

  9. CEF加载FLASH插件时弹出CMD命令行窗口的问题

    这个是flash插件的一个bug,CEF(chromium系列浏览器)关闭sandbox第一次加载flash插件就会跳出这样的一个提示,在Google官方也看到了chromium的issue: 解决方 ...

随机推荐

  1. 5.Docker存储卷

    一.概述 1.Docker底层存储机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层. 如果运行中的容器修改了现有的一个已经存在的文件,那 ...

  2. [CH5E02] A Little Shop of Flowers

    问题描述 You want to arrange the window of your flower shop in a most pleasant way. You have F bunches o ...

  3. service pom

    <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...

  4. 调整ceph的pg数(pg_num, pgp_num)

    https://www.jianshu.com/p/ae96ee24ef6c 调整ceph的pg数 PG全称是placement groups,它是ceph的逻辑存储单元.在数据存储到cesh时,先打 ...

  5. 退役——halfrot's life in OI

    这是一个没有人看的博客里丢了两年的坑,还有很多事应该做,但是我很懒,所以今天把它填了. 前记:和很多人的竞赛生涯一样,一开始我也是奋不顾身,奔月而去,然而身处弱校,没有人引导方向,再加上自己很蒻的主要 ...

  6. CSU 1547 Rectangle(dp、01背包)

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1547 Description Now ,there are some rectang ...

  7. http请求方法,get 对比 post

    本文转自:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp 两种最常用的 HTTP 方法是:GET 和 POST. 什么是 HTTP? ...

  8. 【FICO系列】SAP 创建会计凭证(FB01)的BAPI

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP 创建会计凭证(FB01) ...

  9. hihocoder 1015 : KMP算法(kmp)

    传送门 Description 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一只河蟹,于是河蟹就向小H ...

  10. 微信小程序这一块(下)

    1.小程序分为两部分 :页面.组件 2.小程序中如何定义自定义组件? 凡是通过Page创建的都是页面,而通过Components创建的都是组件 当组件创建成功后,在需要使用的页面进行引入,(找到页面的 ...