CtrlG - A Command Line Context Switcher
CtrlG is a tool to quickly switch contexts to another directory, using a fuzzy finder. If enabled, ctrlg
can cd
all split panes in the current window of a tmux
session to the selected directory. Press ctrl + g to fuzzy find directories, configured by globbing patterns.
Install
Make sure you have cargo
installed. If not, install it from rustup.rs. Then install the ctrlg
CLI by running:
cargo install ctrlg
Once the CLI is installed, you will need to set up the key binding depending on your shell. Alternatively, you can disable the default keybind by setting $CTRLG_NOBIND
to true
before running the init script, then set up your own keybind to call _ctrlg_search_and_go
.
Zsh
echo 'eval "$(ctrlg init zsh)"' >> ~/.zshrc
Bash
echo 'eval "$(ctrlg init bash)"' >> ~/.bashrc
Fish
echo 'ctrlg init fish | source' >> ~/.config/fish/config.fish
Tmux Integration
To make ctrlg
send the cd
command to all split panes in the current tmux
window, set the environment variable CTRLG_TMUX
to true
.
Bash/Zsh
export CTRLG_TMUX=true
Fish
set CTRLG_TMUX true
Configuration
ctrlg
will look for a configuration file at ~/.config/ctrlg/config.yml
. The default configuration is shown below:
# configure what directories to list in the fuzzy finder
# can be any list of globbing patterns, will only show directories
# not files
search_dirs:
- "~/git/*"
# globbing patterns of files to find for use as preview
# see below for more details on previews
preview_files:
- "README.*"
# enable or disable the preview window
previews: true
# force using or not using `bat` for previews
preview_with_bat: [true if `bat` is installed, false otherwise]
# force using or not using `exa` for preview fallback when no
# matching `preview_files` are found
preview_fallback_exa: [true if `exa` is installed, false otherwise]
Any configuration values can be overridden by passing them as arguments to the CLI. When passing arguments to the CLI, replace _
with -
, e.g. preview_with_bat
should be passed to the CLI as --preview-with-bat
. See ctrlg --help
and ctrlg find --help
.
Previews
Previews, if enabled, are generated by rendering the first file in each directory matching any of the specified preview_files
globbing patterns. If a matching file is found, it will be rendered with bat by default if bat
is installed, otherwise it will be rendered with cat
. You can force using or not using bat
with the preview_with_bat
option. You can default to always using the fallback instead of rendering a file by setting an empty list of globbing patterns, like: preview_files:
.
If no matching preview files are found, the directory listing is used as the preview. By default, directory contents are listed using exa by default if exa
is installed, otherwise contents are listed using ls
. You can force using or not using exa
as the fallback preview using the preview_fallback_exa
option.