\" and is distributed under a Creative Commons Attribution-Share Alike
\" 3.0 License.
-.TH "SELECTOR" 1 "" "Francois Fleuret"
+.TH "SELECTOR" 1 "July 2009" "Francois Fleuret" "User Commands"
.SH "NAME"
.SH "SYNOPSIS"
-\fBselector\fP [\fBoptions\fP] [<filename1> [<filename2> ...]]
+\fBselector\fP [\fIoptions\fR] [\fI<filename1>\fR [\fI<filename2>\fR ...]]
.SH "DESCRIPTION"
\fBselector\fP is a command line utility for 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.
+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 bidding. The -v option will inject the selected
-line into the tty input buffer, allowing the user to edit the line and
-execute it as a standard command.
+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 good tool to test regexps, or a way to display
-menus. The -x option allows to specify a label delimiter: the part of
-each line before that character will appear during the selection, and
-the part after that character will be returned.
+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.
-.SH "KEYS"
+Note that because this is an interactive command, the standard input
+can not be used as one of the input files.
+
+.SH "KEY BINDINGS"
Keys corresponding to ASCII codes between " " and "~" add a character
to the pattern string. The Backspace key, "^H" and "^?" delete the
case-insensitive modes.
.SH "OPTIONS"
-.IP "\fB-h\fP" 10
-display help and exits
-.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
-invert the order of the lines
-.IP "\fB-b\fP" 10
+.TP
+\fB-i\fR
+revert the order of the lines
+.TP
+\fB-b\fR
remove the numeric prefix from bash history
-.IP "\fB-z\fP" 10
+.TP
+\fB-z\fR
remove the time prefix from zsh history
-.IP "\fB-d\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)
-.IP "\fB-e\fP" 10
+.TP
+\fB-e\fR
start in regexp mode
-.IP "\fB-a\fP" 10
+.TP
+\fB-a\fR
start in case sensitive mode
-.IP "\fB-q\fP" 10
+.TP
+\fB-q\fR
make a flash instead of a beep when there is an edition error
-.IP "\fB--\fP" 10
+.TP
+\fB--\fR
state that all following arguments are filenames
-.IP "\fB-t <title>\fP" 10
+.TP
+\fB-t \fI<title>\fR
add a title in the modeline
-.IP "\fB-c <fg modeline> <bg modeline> <fg highlight> <bg highlight>\fP" 10
+.TP
+\fB-c \fI<fg_modeline> <bg_modeline> <fg_highlight> <bg_highlight>\fR
select the modeline and highlight color numbers
-.IP "\fB-v\fP" 10
+.TP
+\fB-v\fR
inject the selected line into the tty input buffer
-.IP "\fB-w\fP" 10
+.TP
+\fB-w\fR
add ^Q between characters during tty injection to quote control characters
-.IP "\fB-o <output filename>\fP" 10
+.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-x <label separator>\fP" 10
+.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
-.IP "\fB-l <max number of lines>\fP" 10
+.TP
+\fB-l \fI<max_number_of_lines>\fR
specify the maximum number of lines to take into account
-.IP "\fB-f <input filename>\fP" 10
+.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, you can use
+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 $0\(dq@cd \(dq$0}\(aq)
+
+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)
+
+.B selector -v -x ^A <(awk < something.txt \(aq{ print $0\(dq^A\(dqNR }\(aq)
+
.SH "KEYBINDING IN BASH"
You can associate selector to a single key in bash by using the
associate it to M-r (that is, the "Alt" and "r" key pressed together),
just add something like
-bind '"\\C-[r":"\\C-a\\C-kselector -q -b -i -d -v -w -l ${HISTSIZE} <(history)\\C-m"'
+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 ~/.bashrc.
+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
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.
+Foundation. This is free software: you are free to change and
+redistribute it. There is NO WARRANTY, to the extent permitted by law.