命令行工具PathMarker
一直使用Guake 终端,Guake提供的其中一个功能是快速打开。
大概的意思就是,显示在终端上的数据会经过匹配,如果符合一定的规则,则可以按住ctrl,使用鼠标单击以触发指定操作。
比如对于一个文件,可以Ctrl+鼠标点击,快速调用vim打开。免去复制粘贴的麻烦。对于我这种,经常需要使用git,vim的人,非常好用。
默认提供的匹配比较弱,可以自己下载源码后,修改python正则匹配规则,使其正确匹配git log/show/diff 等的输出,这个修改的位置,等另写一篇吧。
体验了这种便捷之后,开始思考
1.如何在没有guake的辅助下,使用类似功能?
2.能否更便捷?
最开始的想法是,设法在ubuntu默认终端支持类似功能。但很快否决了,一是不知道怎么做比较好,二是我不一定会使用ubuntu的默认终端,我可能会从各种其他的ssh工具中登陆,比如macos的终端,win10的内置ubuntu,甚至手机上的ssh工具。
那么,这个功能还是要实现在服务器上,这样不管从哪里登陆,都可以使用。
那么初步的想法就是,捕获所有的终端输出,识别出其中的文件,并做上标记,比如在每一行的行首打印一个数字,以此数字关联到那一行识别到的文件。这样就可以在后续命令中,使用简单的数字,代替复杂的长路径+文件名。
基本的想法有了之后,还是要先搜索下,看是否已经有现成的工具。
经过一番搜索,没有找到一样的,但找到了fpp, 即Facebook PathPicker .下载试用了一下,还是挺好用的。大概的做法是,将输出通过管道传给fpp,fpp会识别其中的文件名,并类似于输入git 输入commit信息一般,打开一个新的交互页面。在这个界面中,可以通过键盘操作,标记一些文件,最终对这些选中的文件进行操作。更具体的,可以到github页面去看介绍,有简单的视频演示。github页面https://github.com/facebook/pathpicker/
看起来,fpp还是很棒的。但对我来说,还是原本的想法,用起来会跟舒服一些。因为
1.如果使用在输入上做标记的形式,跟原本的使用习惯较为符合。运行了git status/show 等命令后,如果不想进一步打开某个文件,则可正常继续操作。而如果导入fpp,则会打开一个新页面。
2.感觉fpp打开页面进行标记的操作,还是麻烦,更适用于需要一次选择很多文件的情形,而我日常工作,经常是只需要进一步操作其中的一两个文件 。
那还是要自己动手,丰衣足食了。不过既然有fpp这么好的轮子了,还是要用起来,识别文件这个重任就交给fpp了,毕竟已经做得这么完善。
最终的成果,PathMarker.py,将输出通过管道,传给PathMarker.py set,即可打印处理后的输入,对于识别到文件的行,加上一个数字标记。
使用PathMarker.py get xxx, 即可将xxx中的数字,替换为之前get到的文件,并运行xxx.
这么说,还不太好理解,到这里看视频演示吧 https://github.com/zqb-all/PathMarker
原本的流程
git status/show/log ---> 输入“vim ” ---> 手离开键盘,使用鼠标 ---> 使用鼠标选中需要打开的文件(ubunru环境下选中即复制) ---> 粘贴 ---> 手离开鼠标,回到键盘 ---> 回车,打开文件 git status/show/log ---> 根据看到的文件,手工输入文件名打开,即输入vim xxx (无需鼠标,但需要自己输入完整的路径+文件名)
使用guake快速打开功能之后
git status/show/log ---> 手离开键盘,使用鼠标 ---> 左手按住Ctrl,右手使用鼠标单击需要打开的文件 ---> 手回到键盘开始编辑
使用fpp
git status/show/log | fpp ---> 在fpp打开的界面中,选中所需文件 ---> 确定,打开对应文件 (无需鼠标)
使用PathMarker
git status/show/log | PathMarker.py set ---> PathMarker.py get vim + 所需打开文件对应的数字(无需鼠标)
欢迎下载试用。
原文地址:https://www.cnblogs.com/zqb-all/p/9610792.html
命令行工具PathMarker的更多相关文章
- windows下的命令行工具babun
什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...
- 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...
- 命令行工具aspnet_regiis.exe实现加密和解密web.config
命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...
- nodejs 编写(添加时间戳)命令行工具 timestamp
Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...
- 如何用Node编写命令行工具
0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...
- Orchard中的命令行工具
在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...
- Linux 性能监控之命令行工具
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
- 命令行工具解析Crash文件,dSYM文件进行符号化
备份 文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...
- MySQL 命令行工具之 mysqldump 深入研究
mysqldump 是MySQL的一个命令行工具,用于逻辑备份.可以将数据库和表的结构,以及表中的数据分别导出成:create database, create table, insert into的 ...
随机推荐
- Qt QPainter::end: Painter ended whith 2 saced states
在使用Qt QPainter 的时候,有时会遇到“QPainter::end: Painter ended whith 2 saced states” 这时由于我们在使用的QPanter.trans ...
- AGV系统上位机--工程案例【1】
1.满足80%系统需求,根据需求生成任务表单 2.指定小车下方任务 3.项目实战应用 4.后台开发,对接其他平台,简易实现自动生成任务列表,自动排单 5.AGV系统上位机初学者很容易理解上手 6.欢迎 ...
- [Linux] 服务器镜像定时备份解决方案 crontab+rsync+flock
两台服务器定时同步文件解决方案: 环境: 主机:192.168.1.1 镜像机:192.168.1.2 需要将主机内容备份至镜像机(假设用户都为root) 备份内容为 /export 目录下所有内容至 ...
- pexpect获取远端命令执行结果
类比于shell的expect, python中使用pexpect模块来模拟用户和终端交互.有的时候使用pexpect.sendline发送命令后,在各种条件影响下, 可能并不能保证命令在远端服务器执 ...
- 【工作感悟】——揭开“PM”的面纱
[前言] 上次跟大家分享了面试的故事,小编觉得效果还不错,因此小编决定把工作感悟系列写下去,不过时间就不好说了.希望小伙伴们在评论列表中发表自己的看法和观点,积极参与啦~~ [背景] 初来Y公司,作为 ...
- (转)MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode
内核参数overcommit_memory : 它是 内存分配策略 可选值:0.1.2.0:表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并 ...
- 2017 Multi-University Training Contest - Team 3 RXD and functions(NTT)
题解: 我是参考的 http://blog.csdn.net/qq_32570675/article/details/76571666 这一篇 orz 原来可以这么变换,涨姿势 代码: #includ ...
- ARC076 F Exhausted? Hall定理 + 线段树扫描线
---题面--- 题目大意: 有n个人,m个座位,每个人可以匹配的座位是[1, li] || [ri, m],可能有人不需要匹配座位(默认满足),问最少有多少人不能被满足. 题解: 首先可以看出这是一 ...
- 【BZOJ 3772】精神污染 主席树+欧拉序
这道题的内存…………………真·精神污染……….. 这道题的思路很明了,我们就是要找每一个路径包含了多少其他路径那么就是找,有多少路径的左右端点都在这条路径上,对于每一条路径,我们随便选定一个端点作为第 ...
- 【BZOJ2134】单选错位 概率DP
一句话:有一些看似有关系的期望在把事件全面发生之后就变得相互独立了 #include<cstdio> using namespace std; ]; double ans; int mai ...