Hacker News new | past | comments | ask | show | jobs | submit login
Percol: An interactive grep tool in your terminal (github.com/mooz)
95 points by bigsassy on June 13, 2014 | hide | past | favorite | 30 comments



zsh already has a built in menu selection system that looks a lot like the animated .gif here. Check out "zstyle ':completion:*' menu select"


I believe that is what is being shown. The tool is (I think) being demonstrated in a zshell with that feature (and probabaly countless others) turned on, so it is difficult to tell what is shell and what is percol. Or maybe not. The point is I don't know.


I just tried it out in bash, it works pretty much the same way it does in the gif. This description of the functionality in the readme is succinct:

percol

- receives input lines from stdin or a file,

- lists up the input lines,

- waits for your input that filter/select the line(s),

- and finally outputs the selected line(s) to stdout.


I worked on a similar project: a tool that (primarily) tees it's stdin to your tty before you decide how to continue your pipe[1], which is a little more general, though it's admittedly less polished or nice. I think there's an interesting space in making the process of writing commands more interactive, though doing that really well will involve an intelligent solution to the problem of commands with side effects.

[1] https://github.com/jkarni/extendp


Reminds me of Gary Bernhardt's selecta [1].

[1] https://github.com/garybernhardt/selecta


Let's rewrite all major userspace tools this way, or maybe use emacs ? I don't know.

ps: not sarcastic at all.


I agree with your second idea. I don't see how it's different from Vim or Emacs.


Check out vipe, which is included in Joey Hess' moreutils [1]. It lets you edit a pipe in vim. You can use it the same way as percol.

[1] https://joeyh.name/code/moreutils/


It's just a good idea that was never (AFAIK) done for shell only interactions. Often good to be able to have progressive enhancement (people not allowed to install emacs say).


What I was impressed by is

  git checkout $(git branch | percol)
to select the branch name interactively from a menu. How would you do that in Vim or Emacs?


Zsh completion with the menu style can do that, git checkout <tab> and you get a browseable list of branch names.


or dmenu


Google says it's an x11 app? I prefer something that works on random ssh connections and is more "inline" to the current command context


Ha what a moron I am. The funniest part is that I was ranting on #python about the need for a tui only version of that.

ps: even funnier, someone just posted a personal project doing just that.


Funnily enough, I recently implemented something akin to percol:

https://github.com/dhamidi/tmenu

It actually tries to be dmenu for the terminal.


Glorious, I was about to start a similar thing (in python though). Time to play with your toy.

ps: I'd add a readline/inputrc alias for '| tmenu '


Would you mind sharing what that alias would look like and do? I can only imagine it appending the string "| tmenu" to the current line, eventually pressing Return for the user as well.


    $ bind '"\C-L": "\| less -S \C-j"'
Warning: seems like GNU readline isn't case sensitive so C-L === C-l thus, in this example, C-l default behavior (clear screen?) is overridden. I didn't RTFM so trust yourself.


Also, a redditor told me about slmenu (dmenu parody for shell)

http://www.reddit.com/r/linux/comments/283ziw/tmenu_dmenu_fo...


Update: the README now describes the available key bindings and gives more usage examples.


> How would you do that in [...] Emacs?

Use Magit, which is probably the best Git client anyway.


Regarding Emacs: git ships with Emacs integration <https://github.com/git/git/tree/master/contrib/emacs>.

Note that most likely git.el is not on your load-path. After it is loaded, you can use M-x git-status to interactively stage, diff and commit files. In the git-status buffer you can checkout a branch with C-c C-o. If helm is installed, you'll get something similar to percol right in Emacs.


fzf [1] is another nice alternative to this.

[1] https://github.com/junegunn/fzf


Actually I downloaded

https://github.com/hchbaw/auto-fu.zsh

after seeing this README.md.


You made my day.


The gif animation is ridiculously fast. Can't really see what's going on. If it's not needed, you could just delete it.


The gif animation is confusing to me because the shell appears to be extensively customized, so I can't tell what is percol and what is crazy zshell customization.


Agree. There is already completion going on from the shell and it's very distracting. The demo should use a dead simple shell.


Turning off that distracting auto-fu would help a lot, I think.


I found it to be not too fast once I started focusing on what was being input instead of the changes to the output.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: