-
Notifications
You must be signed in to change notification settings - Fork 0
/
.zscript
151 lines (124 loc) · 3.41 KB
/
.zscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/zsh
# jq でpathを探す時に便利
# テキトーに探せるのが良い
function jqp {
__key=$1
if [ -p /dev/stdin ]; then
__str=`cat -`
else
__str=""
echo "usage: json data | jqp some-key"
fi
if [ "${__key}" == "" ]; then
echo "${__str}" | jq -c 'paths'
else
echo "${__str}" | jq -c 'paths | select(.[] == "'${__key}'")'
fi
}
# history検索にpecoを使うかどうか {{{
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | \
eval $tac | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
# }}}
# reload for zsh function {{{
# helper function to autoload
# Example 1 : zload ~/work/function/_f
# Example 2 : zload *
function zload {
if [[ "${#}" -le 0 ]]; then
echo "Usage: $0 PATH..."
echo 'Load specified files as an autoloading function'
return 1
fi
local file function_path function_name
for file in "$@"; do
if [[ -z "$file" ]]; then
continue
fi
function_path="${file:h}"
function_name="${file:t}"
if (( $+functions[$function_name] )) ; then
# "function_name" is defined
unfunction "$function_name"
fi
FPATH="$function_path" autoload -Uz +X "$function_name"
if [[ "$function_name" == _* ]]; then
# "function_name" is a completion script
# fpath requires absolute path
# convert relative path to absolute path with :a modifier
fpath=("${function_path:a}" $fpath) compinit
fi
done
}
# }}}
# direnv の実行 {{{
eval "$(direnv hook zsh)"
# }}}
# avn (for node.js) {{{
[[ -s "$HOME/.avn/bin/avn.sh" ]] && source "$HOME/.avn/bin/avn.sh"
# }}}
# コマンドの補完{{{
source <(kubectl completion zsh)
# }}}
# npm command completion script
#
# Installation: npm completion >> ~/.bashrc (or ~/.zshrc)
# Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm
#
# {{{
COMP_WORDBREAKS=${COMP_WORDBREAKS/=/}
COMP_WORDBREAKS=${COMP_WORDBREAKS/@/}
export COMP_WORDBREAKS
if type complete &>/dev/null; then
_npm_completion () {
local si="$IFS"
IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \
COMP_LINE="$COMP_LINE" \
COMP_POINT="$COMP_POINT" \
npm completion -- "${COMP_WORDS[@]}" \
2>/dev/null)) || return $?
IFS="$si"
}
complete -F _npm_completion npm
elif type compdef &>/dev/null; then
_npm_completion() {
si=$IFS
compadd -- $(COMP_CWORD=$((CURRENT-1)) \
COMP_LINE=$BUFFER \
COMP_POINT=0 \
npm completion -- "${words[@]}" \
2>/dev/null)
IFS=$si
}
compdef _npm_completion npm
elif type compctl &>/dev/null; then
_npm_completion () {
local cword line point words si
read -Ac words
read -cn cword
let cword-=1
read -l line
read -ln point
si="$IFS"
IFS=$'\n' reply=($(COMP_CWORD="$cword" \
COMP_LINE="$line" \
COMP_POINT="$point" \
npm completion -- "${words[@]}" \
2>/dev/null)) || return $?
IFS="$si"
}
compctl -K _npm_completion npm
fi
# }}}