From 68a53a4e23e6fffde917d340a1d91978b1398c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96rjan=20Persson?= Date: Tue, 16 Oct 2012 22:36:56 -0700 Subject: [PATCH] Added last working directory plugin Overrides the cd command to keep track of directory changes. Once zsh is loaded, the last directory will be restored. Mimics how tabs works in many terminals. --- .../last-working-dir.plugin.zsh | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 plugins/last-working-dir/last-working-dir.plugin.zsh diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh new file mode 100644 index 000000000..d7bd6f344 --- /dev/null +++ b/plugins/last-working-dir/last-working-dir.plugin.zsh @@ -0,0 +1,23 @@ +#!/usr/bin/env zsh +# Keeps track of the last used working directory and automatically jumps +# into it for new shells. + +# Flag indicating if we've previously jumped to last directory. +typeset -g ZSH_LAST_WORKING_DIRECTORY + +# Updates the last directory once directory is changed. +function cd() { + builtin cd "$@" && echo "$PWD" > "$ZSH/cache/last-working-dir" +} +alias chdir=cd + +# Changes directory to the last working directory. +function lwd() { + [[ ! -r ~/.zsh_lwd ]] || builtin cd `cat "$ZSH/cache/last-working-dir"` +} + +# Automatically jump to last working directory unless this isn't the first time +# this plugin has been loaded. +if [[ "$ZSH_LAST_WORKING_DIRECTORY" == "" ]]; then + lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true +fi