comparison bin/v @ 129:83a863716c11

Add v plugin
author zegervdv <zegervdv@me.com>
date Wed, 01 Oct 2014 08:37:05 +0200
parents
children
comparison
equal deleted inserted replaced
128:51924b069324 129:83a863716c11
1 #!/usr/bin/env bash
2
3 [ "$vim" ] || vim=vim
4 [ $viminfo ] || viminfo=~/.viminfo
5
6 usage="$(basename $0) [-a] [-l] [-[0-9]] [--debug] [--help] [regexes]"
7
8 [ $1 ] || list=1
9
10 fnd=()
11 for x; do case $x in
12 -a) deleted=1;;
13 -l) list=1;;
14 -[1-9]) edit=${x:1}; shift;;
15 --help) echo $usage; exit;;
16 --debug) vim=echo;;
17 --) shift; fnd+=("$@"); break;;
18 *) fnd+=("$x");;
19 esac; shift; done
20 set -- "${fnd[@]}"
21
22 [ -f "$1" ] && {
23 $vim "$1"
24 exit
25 }
26
27 while IFS=" " read line; do
28 [ "${line:0:1}" = ">" ] || continue
29 fl=${line:2}
30 [ -f "${fl/\~/$HOME/}" -o "$deleted" ] || continue
31 match=1
32 for x; do
33 [[ "$fl" =~ $x ]] || match=
34 done
35 [ "$match" ] || continue
36 i=$((i+1))
37 files[$i]="$fl"
38 done < "$viminfo"
39
40 if [ "$edit" ]; then
41 resp=${files[$edit]}
42 elif [ "$i" = 1 -o "$list" = "" ]; then
43 resp=${files[1]}
44 elif [ "$i" ]; then
45 while [ $i -gt 0 ]; do
46 echo -e "$i\t${files[$i]}"
47 i=$((i-1))
48 done
49 read -p '> ' CHOICE
50 resp=${files[$CHOICE]}
51 fi
52
53 [ "$resp" ] || exit
54 $vim "${resp/\~/$HOME}"