X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=selector.1;h=042c1fb7260b4178ade09337ddcfab80faade9b7;hb=b5af9318678089e98020f531b7af62cd7559d3d6;hp=e3452d5b96ad0589cfa64755db08162f8ef15da4;hpb=1aa2ab0e57b73a863712019a4c8153d08e088ce1;p=selector.git diff --git a/selector.1 b/selector.1 index e3452d5..042c1fb 100644 --- a/selector.1 +++ b/selector.1 @@ -1,67 +1,169 @@ -.TH "SELECTOR" "1" +\" This man page was written by Francois Fleuret +\" and is distributed under a Creative Commons Attribution-Share Alike +\" 3.0 License. + +.TH "SELECTOR" 1 "July 2009" "Francois Fleuret" "User Commands" + .SH "NAME" -selector - A simple shell command for dynamic pattern selection + +selector \- A simple command line utility for dynamic pattern selection + .SH "SYNOPSIS" -.PP -\fBselector\fP [\fBoptions\fP] -f + +\fBselector\fP [\fIoptions\fR] [\fI\fR [\fI\fR ...]] + .SH "DESCRIPTION" -.PP -\fBselector\fP is a command line dynamic string selection. A you type -a list of strings separated by ';', the display is updated in real -time to show only the lines containing all the said strings. - -The main usage of selector is as an efficient search in the shell -command history. With the correct option, it will inject the selected -line into the virtual tty input buffer, hence allowing the user to + +\fBselector\fP is a command line utility for dynamic string +selection. It reads the content of the specified files, and as the +user types a list of strings separated by ";" (or a regexp), the +display is updated in real time to show only the lines containing all +the said strings (or matching the regexp). + +This command was mainly designed as a way to search in the shell +history, for which it is substantially more efficient than the +standard readline ^R binding. With the -v option, it injects the +selected line into the tty input buffer, hence allowing the user to edit the line and execute it as a standard command. -Keys corresponding to ASCII codes between ' ' and '~' add a character -to the pattern string. The Delete key, Backspace key, ^D and ^H delete -one character from the pattern string. +Selector is also a handy tool to test regexps, or to display menus +with many possible choices. For the latter, the -x option allows to +specify a label delimiter: the part of each line before that character +will appear during the selection, but only the part after that +character will be returned. + +Note that because this is an interactive command, the standard input +can not be used as one of the input files. + +.SH "KEY BINDINGS" -The Up and Down cursor keys move the selected line accordingly, and -PageUp and PageDown move by ten lines. The Home and End key move to -the top and the bottom of the list respectively. The return key -selects the current line and exits. +Keys corresponding to ASCII codes between " " and "~" add a character +to the pattern string. The Backspace key, "^H" and "^?" delete the +character immediately on the left of the cursor, while the Delete key +and "^D" delete the character at cursor location. -You can cancel the selection either by interrupting the command with -^C or by typing ^G. +The Left and Right cursor keys move the editing cursor +accordingly. The Up and Down cursor keys move the selected line one +entry at a time, and PageUp and PageDown move it by ten entries. The +Home and End key move to the top and the bottom of the list +respectively. The return key selects the current line and exits. + +The keys "^A", "^E", "^U", and "^K" do somehow what they do in +readline, and you can exit selector without doing anything by either +interrupting the command with "^C" or by typing "^G" or the Escape +key. + +The key "^R" switches between the multi-substring and the regexp +selection mode, and "^I" between the case-sensitive and +case-insensitive modes. .SH "OPTIONS" -.IP "\fB-h\fP" 10 -display help and exits -.IP "\fB-v\fP" 10 -inject the selected line into the tty input buffer -.IP "\fB-m\fP" 10 +.TP +\fB-h\fR +display help and exit +.TP +\fB-m\fR force the monochrome mode -.IP "\fB-i\fP" 10 -inverse the order of lines so that the recent lines are at the top -.IP "\fB-z\fP" 10 +.TP +\fB-i\fR +revert the order of the lines +.TP +\fB-b\fR +remove the numeric prefix from bash history +.TP +\fB-z\fR remove the time prefix from zsh history -.IP "\fB-c \fP" 10 -select the display colors for the modeline and the highlighted line -.IP "\fB-o \fP" 10 +.TP +\fB-d\fR +remove duplicated lines (note that you can have two different lines +with the same visible part if you use the -x option) +.TP +\fB-e\fR +start in regexp mode +.TP +\fB-a\fR +start in case sensitive mode +.TP +\fB-q\fR +make a flash instead of a beep when there is an edition error +.TP +\fB--\fR +state that all following arguments are filenames +.TP +\fB-t \fI\fR +add a title in the modeline +.TP +\fB-c \fI<fg_modeline> <bg_modeline> <fg_highlight> <bg_highlight>\fR +select the modeline and highlight color numbers +.TP +\fB-v\fR +inject the selected line into the tty input buffer +.TP +\fB-w\fR +add ^Q between characters during tty injection to quote control characters +.TP +\fB-o \fI<output_filename>\fR write the selected line into the specified file -.IP "\fB-s <pattern separator>\fP" 10 +.TP +\fB-s \fI<pattern_separator>\fR specify the symbol to separate the substrings in the search pattern -.IP "\fB-l <max number of lines>\fP" 10 -specify the maximum number of lines to consider -.IP "\fB-f <input filename>\fP" 10 -specify the file to search into +.TP +\fB-x \fI<label_separator>\fR +specify the symbol to separate what to show to the user during the +selection from the line to return +.TP +\fB-l \fI<max_number_of_lines>\fR +specify the maximum number of lines to take into account +.TP +\fB-f \fI<input_filename>\fR +specify a file to search into (option kept for compatibility reasons) + +.SH "EXAMPLE" + +To use selector to search into your bash history + +.B selector -q -b -i -d -v -w -l ${HISTSIZE} <(history) + +To show a list of directories and insert a cd command to the selected +one (using @ as a separator) + +.B selector -v -x @ <(find . -type d | awk \(aq{print $1\(dq@cd \(dq$0}\(aq) -.SH "EXAMPLES" +To select a line in a long text and returns the line number (this +command uses ^A as a separator, hence there will be problems if the +file contains ^A) -To use selector to search into your shell history: +.B selector -v -x ^A <(awk < something.txt \(aq{ print $0\(dq^A\(dqNR }\(aq) -.B selector \-f ${HISTFILE} \-v +.SH "KEYBINDING IN BASH" + +You can associate selector to a single key in bash by using the +command 'bind' in your bash initialization file. For instance, to +associate it to M-r (that is, the "Alt" and "r" key pressed together), +just add something like + +bind \(aq\(dq\\C-[r\(dq:\(dq\\C-a\\C-kselector -q -b -i -d -v -w -l ${HISTSIZE} <(history)\\C-m\(dq\(aq + +in your +.IR ~/.bashrc . + +Note that depending on the configuration of your system, the sequence +associated to the M-r key, which is here "C-[r", may differ. To figure +it out, simply press C-q followed by M-r in the console. + +The control character "C-a" puts the cursor to the mostleft location, +"C-k" erases the current content of the readline buffer, and "C-m" +simulates the enter key. .SH "BUGS" -Probably many. The main problem is the usage of Linux-specific ioctl() -to put the selected line in the tty buffer. +There are modeline display problems if the pattern is too long. This +program does not handle multibyte characters. .SH "AUTHOR" -.PP -Written by Francois Fleuret <francois@fleuret.org>. Permission is -granted to copy, distribute and/or modify this document under the -terms of the GNU GPL. + +The selector command was written by Francois Fleuret +<francois@fleuret.org> and is distributed under the terms of the GNU +General Public License version 3 as published by the Free Software +Foundation. This is free software: you are free to change and +redistribute it. There is NO WARRANTY, to the extent permitted by law.