diff --git a/plugins/README.md b/plugins/README.md index 1817ba8e8d9cf31dfb698273cec64946cc4f7112..288fa5dcc88d6af3809eb56d9ffdcf5a98ef9699 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -36,6 +36,7 @@ * [__rvm__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/rvm) – [RVM](http://rvm.io) Ruby version manager. * [__ssh__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/ssh) – ssh conservative $TERM value helper. * [__sublime__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/sublime) – Creates `subl` command line shortcut to launch [Sublime Text editor](http://sublimetext.com/). +* [__tab__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/tab) – Open the current directory (or any other directory) in a new tab. * [__tiny__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/tiny) - tap into github's git.io URL shortener. * [__tmux__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/tmux) – Plugin to start tmux with support for 256 colours. * [__vi-mode__](https://github.com/bpinto/oh-my-fish/tree/master/plugins/vi-mode) – Basic vi key bindings emulation for fish. diff --git a/plugins/tab/tab.fish b/plugins/tab/tab.fish new file mode 100644 index 0000000000000000000000000000000000000000..b01c5b900bb744c9546f81b42ce94ad8f7fd2d2d --- /dev/null +++ b/plugins/tab/tab.fish @@ -0,0 +1,56 @@ +# Open new iTerm and Terminal tabs from the command line +# +# Author: Justin Hileman (http://justinhileman.com) +# +# Usage: +# tab Opens the current directory in a new tab +# tab [PATH] Open PATH in a new tab +# tab [CMD] Open a new tab and execute CMD +# tab [PATH] [CMD] ... You can prolly guess + +function tab -d 'Open the current directory (or any other directory) in a new tab' + set -l cmd '' + set -l cdto $PWD + + if test (count $argv) -gt 0 -a -d $argv[1] + pushd . >/dev/null + cd $argv[1] + set cdto $PWD + set -e argv[1] + popd >/dev/null + end + + if test (count $argv) -gt 0 + set cmd "; $argv" + end + + switch $TERM_PROGRAM + + case 'iTerm.app' + osascript 2>/dev/null -e " + tell application \"iTerm\" + tell current terminal + launch session \"Default Session\" + tell the last session + write text \"cd \\\"$cdto\\\"$cmd\" + end tell + end tell + end tell + " + + case 'Apple_Terminal' + osascript 2>/dev/null -e " + tell application \"Terminal\" + activate + tell application \"System Events\" to keystroke \"t\" using command down + repeat while contents of selected tab of window 1 starts with linefeed + delay 0.01 + end repeat + do script \"cd \\\"$cdto\\\"$cmd\" in window 1 + end tell + " + + case '*' + echo "Unknown terminal: $TERM_PROGRAM" >&2 + end +end