zsh
For a zsh-only alternative (with some additional features such as setting up aliases) see zsh-autoenv.
eval "$(direnv hook zsh)"
allow a .envrc
direnv allow .
vim
Per project .vimrc; in .envrc:
add_extra_vimrc
In ~/.config/direnv/direnvrc:
add_extra_vimrc() {
local extravim="$(find_up .vimrc)"
if [ -n "$extravim" ]; then
echo "Adding extra .vimrc: ${extravim}"
path_add EXTRA_VIM $extravim
fi
}
In ~/.vimrc:
if exists("$EXTRA_VIM")
for path in split($EXTRA_VIM, ':')
exec "source ".path
endfor
endif