An open API service indexing awesome lists of open source software.

https://github.com/hernancerm/zsh-trampoline

Jump to the places that matter to you
https://github.com/hernancerm/zsh-trampoline

cd navigation zsh zsh-plugin

Last synced: about 1 month ago
JSON representation

Jump to the places that matter to you

Awesome Lists containing this project

README

        


zsh-trampoline


Jump to the places that matter to you.





## What is this?

This is a Zsh plugin to efficiently `cd` to commonly visited dirs. The plugin displays all
your configured dirs in fzf always in the same order. Think of it like a super simple
[zoxide](https://github.com/ajeetdsouza/zoxide) just for Zsh. The plugin can also open
files in `$EDITOR`.

## Usage

While on the shell, press ctrl+t to start fzf with dirs and files to "jump" to:
`cd` or open with `$EDITOR`. This list is taken from `$ZT_CONFIG` that you need to define.
Press enter to select.

## Installation

### Without a plugin manager

1. Install [fzf](https://github.com/junegunn/fzf) version >=0.45.
[Homebrew](https://brew.sh/) command: `brew install fzf`.
2. Clone the zsh-trampoline Git repository by executing the below command:

```text
git clone 'https://github.com/hernancerm/zsh-trampoline.git' \
"${HOME}/.zsh-trampoline/zsh-trampoline"
```

3. Place the below snippet at the end of your file `~/.zshrc`:

```text
# ZSH-TRAMPOLINE - Start - .
source "${HOME}/.zsh-trampoline/zsh-trampoline/trampoline.plugin.zsh"
ZT_CONFIG=(
# Place each dir and file you want to jump to in a new line.
~ # Example, you can remove this line.
)
zt_setup_widget
# ZSH-TRAMPOLINE - End.
```

4. Start a new shell.

### With a plugin manager

If you feel comfortable with shell scripting and plan to install other Zsh plugins, like
[zsh-vi-mode](https://github.com/jeffreytse/zsh-vi-mode), I recommend you use a shell
plugin manager like [Sheldon](https://github.com/rossmacarthur/sheldon) for the
installation. Comparing this approach to the plugin-manager-less approach, the plugin
manager would be in charge of doing the git clone (step 2) and sourcing the plugin on
startup (line beginning with `source` from the snippet of step 3, you still need to define
`ZT_CONFIG` and call `zt_setup_widget`).

## Parameter ZT_CONFIG

Some things to note:

- If your dir or file has whitespace chars, surround it with single quotes.
- Environment variables, defined as `export MY_VAR=~/file/path`, are supported quoted. Do
not forget the `export` keyword. That is, this could be a valid entry in `ZT_CONFIG`:
`'${MY_VAR}'`. The plugin does the expansion.
- On ctrl+t what gets listed is:
- Files. Quoted env vars which point to a file are listed as the env var.
- Level 1 sub-dirs of the dirs in `ZT_CONFIG`. Quoted env vars which point to a dir are
treated as dirs.
- Anything ending in `:0`. In this case the `:0` is stripped. The purpose of this is to
be able to list the dirs themselves which are in `ZT_CONFIG`, avoiding the sub-dirs
replacement.

## Integration with other Zsh plugins

- [jeffreytse/zsh-vi-mode](https://github.com/jeffreytse/zsh-vi-mode) (ZVM).
Binding ctrl+t is done inside a specific ZVM function, as below. Do not call
`zt_setup_widget` when integrating with ZVM.

```text
function zvm_after_init {
zt_zvm_setup_widget
}
```

## Optional configuration

Optional configuration is provided through parameters.

Zsh parametersAllowed values
Default valueDescription

ZT_KEY_MAP_START


bindkey key map
^t

Key map to list dirs & files in fzf. Default: ctrl+t.

## Similar projects

-
-
-