summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_grep80
1 files changed, 60 insertions, 20 deletions
diff --git a/Completion/Unix/Command/_grep b/Completion/Unix/Command/_grep
index a31cf9cf6..5f45ce9a8 100644
--- a/Completion/Unix/Command/_grep
+++ b/Completion/Unix/Command/_grep
@@ -1,7 +1,6 @@
-#compdef grep egrep fgrep bsdgrep zgrep zegrep zfgrep -value-,GREP_OPTIONS,-default-
-# Ulrik Haugen 2001
+#compdef grep egrep fgrep bsdgrep zgrep zegrep zfgrep ggrep gegrep gfgrep gzgrep gzegrep gzfgrep -value-,GREP_OPTIONS,-default-
-local arguments matchers command
+local arguments matchers command variant
if [[ $service = *GREP_OPT* ]]; then
compset -q
@@ -9,7 +8,7 @@ if [[ $service = *GREP_OPT* ]]; then
(( CURRENT++ ))
command=grep
else
- arguments=( '(-e --regexp -f --file)1: :_guard "^--*" pattern' )
+ arguments=( '(-e --regexp -f --file)1: :_guard "^-*" pattern' )
if [[ $service = z* ]]; then
arguments+=( '*:files:_files -g "*.gz(-.)"' )
else
@@ -18,13 +17,12 @@ else
command="$words[1]"
fi
-if [[ $service != (|z)[ef]grep ]]; then
+if [[ $service != (|g)(|z)[ef]grep ]]; then
matchers='(--extended-regexp --fixed-strings --basic-regexp --perl-regexp -E -F -G -P)'
arguments+=(
$matchers{--extended-regexp,-E}'[use extended regular expression]'
$matchers{--fixed-strings,-F}'[use literal strings]'
$matchers{--basic-regexp,-G}'[use basic regular expression]'
- $matchers{--perl-regexp,-P}'[use perl regular expression]'
)
fi
@@ -34,12 +32,9 @@ arguments+=(
'(--before-context -B)'{--before-context=,-B+}'[specify lines of leading context]:lines'
'(--context -C)'{--context=,-C-}'[specify lines of context]:lines'
'(--color --colour)--'{color,colour}'=-[distinguish matching string]::when:(always never auto)'
- '(--no-group-separator)--group-separator=[specify separator between blocks of context]:separator [--]'
- "(--group-separator)--no-group-separator[don't separate context blocks]"
'(--byte-offset -b -c)'{--byte-offset,-b}'[print the byte offset with output lines]'
'(--text -a -I)--binary-files=[specify type to assume for binary files]:file type:(binary without-match text)'
'(--count -c --byte-offset -b --line-number -n)'{--count,-c}'[only print a count of matching lines]'
- '(-T --initial-tab)'{-T,--initial-tab}'[make tabs line up (if needed)]'
'(--directories -d -r --recursive)'{--directories=,-d+}'[specify handling of directories]:action on directory:(read skip recurse)'
'(--devices -D)'{--devices=,-D+}'[specify handling of devices, FIFOs and sockets]:action on device:(read skip)'
'(1)*'{--regexp=,-e+}'[specify pattern]:pattern'
@@ -50,30 +45,75 @@ arguments+=(
'--line-buffered[flush output on every line]'
'(--text -a --binary-files)-I[process binary files as if non-matching]'
'(--ignore-case -i -y)'{--ignore-case,-i,-y}'[case-insensitive]'
- '(--files-without-match -L --file-with-matches -l --no-filename -h)'{--files-without-match,-L}"[output non-matching files' names only]"
- '(--files-with-matches -l --files-without-match -L --no-filename -h)'{--files-with-matches,-l}"[output matching files' names only]"
- '(--max-count -m)'{--max-count=,-m+}'[stop after specified no of matches]:max number of matches'
+ '(--files-without-match -L --file-with-matches -l --no-filename -h -o --only-matching)'{--files-without-match,-L}"[output non-matching files' names only]"
+ '(--files-with-matches -l --files-without-match -L --no-filename -h -o --only-matching)'{--files-with-matches,-l}"[output matching files' names only]"
+ '(--max-count -m)'{--max-count=,-m+}'[stop after specified no of matches in each file]:max number of matches'
'(--line-number -n -c)'{--line-number,-n}'[prefix output with line numbers]'