X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=selector.git;a=blobdiff_plain;f=selector.1;h=a0a88b4f19f4c0c85a79c679ecf3492203800542;hp=10cf637cf20237518a995b8c8a524b765c2b606a;hb=HEAD;hpb=f28135946b66a5da75a576f79c12d07e334ed04b diff --git a/selector.1 b/selector.1 index 10cf637..a0a88b4 100644 --- a/selector.1 +++ b/selector.1 @@ -1,87 +1,194 @@ -.TH "SELECTOR" "1" +.TH "SELECTOR" "1.1.8" "February 2013" "Francois Fleuret" "User Commands" + +\" This man page was written by Francois Fleuret +\" and is distributed under a Creative Commons Attribution-Share Alike +\" 3.0 License. + .SH "NAME" -selector - A simple command line for dynamic pattern selection + +selector \- A simple command line utility for dynamic pattern selection + .SH "SYNOPSIS" -.PP -\fBselector\fP [\fBoptions\fP] [ [ ...]] + +\fBselector\fP [\fIoptions\fR] [\fI\fR [\fI\fR ...]] + .SH "DESCRIPTION" -.PP -\fBselector\fP is a command line dynamic string selection. As you type -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. -The ^R key switches between the standard multi-substring mode and the -regexp mode. +\fBselector\fP is a command line utility for interactive real-time +pattern matching. 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 efficiently in the +shell history, for which it is substantially better 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. + +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 +show different strings than the ones returned. + +Note that because this is an interactive command, the standard input +cannot be used as one of the input files. + +.SH "USING SELECTOR IN BASH" + +The selector command comes with a shell script for bash. If you add -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 -edit the line and execute it as a standard command. +.P +.nf +.B source bash-selector.sh --hist --cd -Selector is also a good tool to test regexp quickly. +.fi +in your \fB~/.bashrc\fR, it will remap M-r to the smart history search, +and redefine \fBcd\fR so that M-c provides a smart cd history. -Keys corresponding to ASCII codes between ' ' and '~' add a character -to the pattern string. The Backspace key, ^H and ^? delete the -character on the left of the cursor, while Delete key and ^D delete -the character at cursor location. +This script relies on readline being configured with the default +emacs-style key bindings. You may have to hack a bit if you want to +use it with the vi-style mode. -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. +.SH "KEY BINDINGS" -The shortcuts ^A, ^E, ^U, and ^K do somehow what they do in readline, -and you can cancel the selection by either interrupting the command -with ^C or by typing ^G. +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. + +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-m\fP" 10 +.TP +\fB-h\fR, \fB--help\fR +display help and exit +.TP +\fB-m\fR, \fB--monochrome\fR force the monochrome mode -.IP "\fB-i\fP" 10 -inverse the order of the lines -.IP "\fB-b\fP" 10 +.TP +\fB-i\fR, \fB--revert-order\fR +revert the order of the lines +.TP +\fB-b\fR, \fB--remove-bash-prefix\fR remove the numeric prefix from bash history -.IP "\fB-z\fP" 10 +.TP +\fB-z\fR, \fB--remove-zsh-prefix\fR remove the time prefix from zsh history -.IP "\fB-d\fP" 10 -remove duplicated lines -.IP "\fB-e\fP" 10 -start with the regexp mode activated -.IP "\fB-a\fP" 10 -make the matching case sensitive -.IP "\fB--\fP" 10 +.TP +\fB-d\fR, \fB--remove-duplicates\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, \fB--regexp\fR +start in regexp mode +.TP +\fB-a\fR, \fB--case-sensitive\fR +start in case-sensitive mode +.TP +\fB-j\fR, \fB--show-long-lines\fR +print a long-line indicator at the end of truncated lines +.TP +\fB-y\fR, \fB--show-hits\fR +highlight the part(s) of each line which match(es) the substrings or regexp +.TP +\fB-u\fR, \fB--upper-case-makes-case-sensitive\fR +using an upper case in the matching string makes the matching +case-sensitive +.TP +\fB-q\fR, \fB--no-beep\fR +make a flash instead of a beep when there is an edition error +.TP +\fB--\fR state that all following arguments are filenames -.IP "\fB-t \fP" 10 +.TP +\fB--bash\fR +standard setting for bash history search, same as + +-b -i -d -v -w -l ${HISTSIZE} +.TP +\fB--delete-regexp \fI<regexp>\fR +deletes in every line the portion matching the regexp +.TP +\fB-t \fI<title>\fR, \fB--title \fI<title>\fR add a title in the modeline -.IP "\fB-c <fg modeline> <bg modeline> <fg highlight> <bg highlight>\fP" 10 -select the modeline and highlight color numbers -.IP "\fB-v\fP" 10 +.TP +\fB-r \fI<pattern>\fR, \fB--pattern \fI<pattern>\fR +set a pattern +.TP +\fB-c \fI<colors>\fR, \fB--colors \fI<colors>\fR +select the modeline and highlight color numbers with a color list of +the form + +\fI<fg_modeline>,<bg_modeline>,<fg_highlight>,<bg_highlight>\fR +.TP +\fB-v\fR, \fB--inject-in-tty\fR inject the selected line into the tty input buffer -.IP "\fB-o <output filename>\fP" 10 +.TP +\fB-w\fR, \fB--add-control-qs\fR +add ^Q between characters during tty injection to quote control characters +.TP +\fB-o \fI<filename>\fR, \fB--output-file \fI<filename>\fR write the selected line into the specified file -.IP "\fB-s <pattern separator>\fP" 10 -specify the symbol to separate the substrings in the search pattern -.IP "\fB-l <max number of lines>\fP" 10 +.TP +\fB-s \fI<separator>\fR, \fB--pattern-separator \fI<separator>\fR +specify the character to separate the substrings in the search pattern +.TP +\fB-x \fI<separator>\fR, \fB--label-separator \fI<separator>\fR +specify the character to separate what to show to the user during the +selection from the line to return. If the provided separator is "\\n", +the lines to show to the user alternate with the lines to return +.TP +\fB-l \fI<number>\fR, \fB--number-of-lines \fI<number>\fR specify the maximum number of lines to take into account -.IP "\fB-f <input filename>\fP" 10 -specify a file to search into (option kept for compatibility reasons) .SH "EXAMPLES" -To use selector to search into your bash history, you can use +To use selector to search into your bash history + +.P +.nf +.B selector -q --bash <(history) -.B selector -d -i -b -v <(history) +.fi +To show a list of directories and insert a cd command to the selected +one + +.P +.nf +.B selector -v -x \(dq\\n\(dq <(find . -type d | awk \(aq{ print $0\(dq\\ncd \(dq$0 }\(aq) + +.fi +To select a line in a long text and write the line number in /tmp/nb + +.P +.nf +.B selector -o /tmp/nb -x \(dq\\n\(dq <(awk < something.txt \(aq{ print $0\(dq\\n\(dqNR }\(aq) .SH "BUGS" -Modeline display problems if the pattern is too long. Probably many -others. +There are modeline display problems if the pattern is too long. This +program does not handle multibyte characters. + +The \fB-v\fR option does not work on FreeBSD 8.0 since the TIOCSTI +ioctl request is broken. .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. + +Written by Francois Fleuret <francois@fleuret.org> and 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.