Mercurial > dotfiles.old
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}" |