]> git.treefish.org Git - fex.git/blob - bin/zz
Original release 20160328
[fex.git] / bin / zz
1 #!/bin/sh
2
3 # to use zz with vim, write to your .vimrc:
4 #
5 # noremap <silent> zz> :w !zz<CR><CR>
6 # noremap <silent> zz< :r !zz<CR>
7
8 ZZ=${ZZ:-$HOME/.zz}
9
10 if [ "$*" = -h -o "$*" = --help ]; then
11   exec cat<<EOD
12 zz is the generic clip board program. See also the edit helper program ezz.
13 The clip board is \$ZZ (default: \$HOME/.zz). Options and modes are:
14
15 "zz"            write \$ZZ to STDOUT
16 "zz file(s)"    copy file(s) into \$ZZ
17 "zz -"          write STDIN (keyboard, mouse buffer) to \$ZZ
18 "zz +"          add STDIN (keyboard, mouse buffer) to \$ZZ
19 "... | zz"      write STDIN from pipe to \$ZZ
20 "... | zz +"    add STDIN from pipe to \$ZZ
21 "zz | ..."      write \$ZZ to pipe
22 "zz .."         write previous \$ZZ to STDOUT
23
24 Examples:
25
26   zz *.txt
27   ls -l | zz
28   zz | wc -l
29   (within mutt:) |zz
30   (within tin:)  |azz
31   (within vi:)   :w !zz
32   (within vi:)   :r !zz
33
34 Limitation: zz does not work across different accounts or hosts! Use xx instead.
35 EOD
36 fi
37
38 if [ "$1" = + ]; then
39   shift
40   exec cat -- "$@" >>$ZZ
41 fi
42
43 if [ -t 0 ]; then
44     if [ -z "$1" ]; then
45         exec cat -- $ZZ
46     elif [ "$1" = .. ]; then
47         exec cat -- $ZZ~
48     else
49         test -f $ZZ && mv $ZZ $ZZ~
50         exec cat -- "$@" >$ZZ
51     fi
52 else
53     test -f $ZZ && mv $ZZ $ZZ~
54     exec cat >$ZZ
55 fi