+.TH "SELECTOR" "1.1.5" "November 2011" "Francois Fleuret" "User Commands"
+
\" This man page was written by Francois Fleuret <francois@fleuret.org>
\" 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 command line utility for dynamic pattern selection
.SH "DESCRIPTION"
-\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
+\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 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.
+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
Note that because this is an interactive command, the standard input
can not 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
+
+.B source bash-selector.sh --hist --cd
+
+in your \fB~/.bashrc\fR, it will remap M-r to the smart history search,
+and redefine cd so that M-c provides a smart cd history.
+
.SH "KEY BINDINGS"
Keys corresponding to ASCII codes between " " and "~" add a character
.SH "OPTIONS"
.TP
-\fB-h\fR
+\fB-h\fR, \fB--help\fR
display help and exit
.TP
-\fB-m\fR
+\fB-m\fR, \fB--monochrome\fR
force the monochrome mode
.TP
-\fB-i\fR
+\fB-i\fR, \fB--revert-order\fR
revert the order of the lines
.TP
-\fB-b\fR
+\fB-b\fR, \fB--remove-bash-prefix\fR
remove the numeric prefix from bash history
.TP
-\fB-z\fR
+\fB-z\fR, \fB--remove-zsh-prefix\fR
remove the time prefix from zsh history
.TP
-\fB-d\fR
+\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-e\fR, \fB--regexp\fR
start in regexp mode
.TP
-\fB-a\fR
+\fB-a\fR, \fB--case-sensitive\fR
start in case sensitive mode
.TP
-\fB-q\fR
+\fB-j\fR, \fB--show-long-lines\fR
+print three dots at the end of truncated lines
+.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
.TP
-\fB-t \fI<title>\fR
+\fB--bash\fR
+standard setting for bash history search, same as
+
+-b -i -d -v -w -l ${HISTSIZE}
+.TP
+\fB-t \fI<title>\fR, \fB--title \fI<title>\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
+\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-v\fR, \fB--inject-in-tty\fR
inject the selected line into the tty input buffer
.TP
-\fB-w\fR
+\fB-w\fR, \fB--add-control-qs\fR
add ^Q between characters during tty injection to quote control characters
.TP
-\fB-o \fI<output_filename>\fR
+\fB-o \fI<filename>\fR, \fB--output-file \fI<filename>\fR
write the selected line into the specified file
.TP
-\fB-s \fI<pattern_separator>\fR
-specify the symbol to separate the substrings in the search pattern
+\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<label_separator>\fR
-specify the symbol to separate what to show to the user during the
+\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
.TP
-\fB-l \fI<max_number_of_lines>\fR
+\fB-l \fI<number>\fR, \fB--number-of-lines \fI<number>\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"
+.SH "EXAMPLES"
To use selector to search into your bash history
-.B selector -q -b -i -d -v -w -l ${HISTSIZE} <(history)
+.B selector -q --bash <(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)
+.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
.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
-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"
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"
-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.
+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.