Ecosyste.ms: Awesome

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

https://github.com/MenkeTechnologies/zpwr

ZPWR => World's Most Advanced UNIX Terminal Environment
https://github.com/MenkeTechnologies/zpwr

bat emacs exa fd neovim powerlevel10k tmux vim zinit zsh

Last synced: about 2 months ago
JSON representation

ZPWR => World's Most Advanced UNIX Terminal Environment

Lists

README

        

# ![zpwr](https://menketechnologies.github.io/img/zpwr.png?raw=true): World's Most Advanced UNIX Terminal Environment

![tmux final](https://menketechnologies.github.io/img/tmuxfinal1.png?raw=true)

#### Master [![Build Status](https://travis-ci.com/MenkeTechnologies/zpwr.svg?branch=master)](https://travis-ci.com/MenkeTechnologies/zpwr) Dev [![Build Status](https://travis-ci.com/MenkeTechnologies/zpwr.svg?branch=dev)](https://travis-ci.com/MenkeTechnologies/zpwr) Version [![GitHub tag](https://img.shields.io/github/tag/MenkeTechnologies/zpwr.svg)](https://GitHub.com/MenkeTechnologies/zpwr/tags/) Commits [![GitHub commits](https://img.shields.io/github/commits-since/MenkeTechnologies/zpwr/v1.0.svg)](https://GitHub.com/MenkeTechnologies/zpwr/commit/) Contributors [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors)

This project started out as my own version of Hashrocket's [Dotmatrix](https://github.com/hashrocket/dotmatrix) repo and it then grew.

It is an extremely powerful custom terminal environment built on top of [zinit](https://github.com/zdharma-continuum/zinit).

There is a significant amount of custom zsh, bash, vimL and perl code that I wrote to support very advanced functionality that I desired.

## Contents

- [Full Install](#full-installation-instructions-to-zpwr)
- [Install Options](#installation-options)
- [Features](#zpwr-features)
- [Dependencies](#zpwr-dependencies)
- [Supported Operating Systems](#supported-operating-systems)
- [ZPWR Extras Not Installed](#zpwr-extras-not-installed)
- [Limited Install](#limited-install)
- [Uninstall](#uninstall)
- [Setup Step: Font](#font)
- [Updating](#updating)
- [Tmux Prefix Detail](#tmux-prefix) - How To
- [Vim Autosave](#autosaving-vim-plugins) - Feature
- [Auto Display Completion Choices](#auto-list-completions) - Feature
- [Bypass Space Expansion](#bypassing-expansion-on-space) - How To
- [Turning Off Ponies And Colors Globally](#turning-off-ponies-and-colors-globally) - How To
- [Vim Language Support For Tmux Right Pane](#running-script-from-vim-in-tmux-right-pane-is-supported-for-these-languages)
- [Main Window](#tmux-main-window) - Feature
- [Personal Config File Information](#personal-config) - Detail
- [ZPWR verb menu completion](#zpwr-verbs) - Feature
- [ZPWR auto menu completion](#zpwr-start-auto) - Feature
- [Github Account Environment Variable](#zpwr_github_account-variable) - Setup Step
- [Adding A New Zsh Plugin](#adding-more-zinit-plugins) - How To
- [Configurable Environment Variables](#environment-variables) - Feature
- [Test Suite](#tests)
- [Super Fast Shell Startup Speed](#shell-startup-speed) - Feature
- [Contributing](#contributing) - documentation, marketing, video tutorials, GIFs/screenshots in README and expanding the tests
- [Warning](#warnings) - The only user modifiable files are the user token files
- [MacbookPro Screenshots](#running-on-a-macbookpro)
- [RasberryPi Screenshots](#running-on-the-raspberry-pi-3)
- [Rock64 Screenshots](#running-on-the-rock64)
- [KeyBindings](#keybindings-generated-with-source-keybindingstoreadmezsh--readmemd)
- [Tmux Keybindings](#tmux-keybindings-tmux-lsk)
- [Zsh Vim Insert Mode Keybindings](#zsh-vim-insert-mode-keybindings-bindkey--m-viins--l)
- [Zsh Vim Normal Mode Keybindings](#zsh-vim-normal-mode-keybindings-bindkey--m-vicmd--l)
- [Zsh Vim MenuSelect Mode Keybindings](#zsh-menuselect-mode-keybindings-bindkey--m-menuselect--l)
- [Zsh Vim Visual Mode Keybindings](#zsh-vim-visual-mode-keybindings-bindkey--m-visual--l)
- [Zsh Vim ListScroll Mode Keybindings](#zsh-listscroll-mode-keybindings-bindkey--m-listscroll--l)
- [Zsh Vim Operator Mode Keybindings](#zsh-vim-operator-mode-keybindings-bindkey--m-viopp--l)
- [Vim Insert Mode Keybindings](#vim-keybindings-insert-mode)
- [Vim Normal Mode Keybindings](#vim-keybindings-normal-mode)
- [Vim Keybindings Visual Mode](#vim-keybindings-visual-mode)
- [Vim Keybindings Command Colon Mode](#vim-keybindings-command-colon-mode)

# Full Installation Instructions to `~/.zpwr`

```sh
sh -c "$(curl -fsSL raw.githubusercontent.com/MenkeTechnologies/zpwr/master/install/s)"
```
OR
```sh
git clone --depth 1 -- https://github.com/MenkeTechnologies/zpwr.git ~/.zpwr && cd ~/.zpwr/install && ./zpwrInstall.sh
```

The installer will confirm what will be installed and overwritten before executing.

Zinit will install plugins on first zsh after install.

## Full Installation Instructions to `$ZPWR`
To install to a custom directory, clone the project to custom directory and start the installer. ZPWR will pick up its location and export ZPWR to that directory.
This also means you can move ZPWR after install after updating the sym links that are in `$HOME`. First `export ZPWR_INSTALL=/install` in current shell. Replace `` with your new install dir and keep `/install` in the export.
Then run `zpwr regenconfiglinks` in same shell to create new sym links pointing to your new directory ``. Then exec a new zsh with `exec zsh` and all environment variables will be set accordingly.

## Installation Options to `~/.zpwr/install/zpwrInstall.sh`
```sh
Options:
-a Install all dependencies
-c Copy just configs
-n Do not start tmux at end of installer
-s Skip main section
-h Display this message
-V Display script version
```

## ZPWR Features
- 405+ zpwr subcommands covering most of ZPWR functionality with colorized zsh menucompletion `zpwr `
- 175+ centralized environment variables in ZPWR namespace to control functionality
- 775+ centralized ZPWR files in `~/.zpwr` allowing easy uninstall
- 13.2k+ zsh tab completions including [zsh-more-completions](https://github.com/MenkeTechnologies/zsh-more-completions)
- 175+ bash, perl, zsh and python scripts in `~/.zpwr/scripts` or `$ZPWR_SCRIPTS` git tracked
- 1990+ aliases
- 345+ git aliases from OMZ git plugin and [zsh-git-acp](https://github.com/MenkeTechnologies/zsh-git-acp)
- user specific ZPWR files in `~/.zpwr/local` git ignored
- installer specific ZPWR files in `~/.zpwr/install` git tracked
- ZPWR installer ouput in `~/.zpwr/local/installer` git ignored
- central on/off control of zpwr colorful output with `ZPWR_COLORS`
- zsh completion with descriptions for parameters, regular, suffix and global aliases
- spelling correction, abbreviation expansion and automatic capitalization on the command line [zsh-expand](https://github.com/MenkeTechnologies/zsh-expand)
- snippets with tabstops that expand with spacebar and advance to next stop with C-o [zsh-expand](https://github.com/MenkeTechnologies/zsh-expand)
- expanding regular aliases and global aliases from zsh menu selection and in vim insert mode [zsh-expand](https://github.com/MenkeTechnologies/zsh-expand)
- optional preexec expansion of regular aliases and global aliases or only history expansion of aliases
- color-coded groups of zsh menu completion for commands, aliases, reswords, functions, builtins, parameters, files, command history, correction
- color-coded groups of zsh menu completion for man pages
- color-coded groups of zsh menu completion for git subcommands
- color-coded groups of zsh menu completion for git objects
- heavily colorized man pages [zsh-very-colorful-manuals](https://github.com/MenkeTechnologies/zsh-very-colorful-manuals)
- insert matching quotes, brackets and parentheses like most IDEs [zsh-autopair](https://github.com/hlissner/zsh-autopair)
- custom keybinding to open files most recently edited based on viminfo and emacs recentf and placed into fzf for fuzzy searching `zpwr vimrecent`
- vim keybindings (insert, normal and visual modes) to run current code file open in vim in tmux pane to right
- vim keybindings (insert, normal and visual modes) to run current vim selection in tmux pane to right as standalone script
- vim keybindings (insert, normal and visual modes) to run current vim selection in tmux pane to right in REPL
- fzf preview pane show contents of JAR, WAR, deb, rpm, zip, tgz and gzip files controlled by central FZF.*OPTS env vars
- ergonomic, repeating tmux keybindings for next and previous windows
- zsh keybindings to fzf search file names and syntax highlighted, numbered file preview from bat or pygmentize `zpwr vimfilesearch`
- zsh keybindings to fzf search file contents and syntax highlighted, numbered file preview from bat or pygmentize `zpwr vimwordsearch`
- zsh keybindings to fzf search of network processes with lsof return PIDs `zpwr lsof`
- zsh function to cache all git directories `zpwr regengitrepocache`
- zsh function for fzf searching of all git directories `zpwr gitrepos`
- zsh function for fzf searching of all dirty git directories `zpwr gitreposdirty`
- zsh function to exec cmd in all git directories `zpwr gitreposexec`
- integration of [z](https://github.com/MenkeTechnologies/zsh-z) frecency database into _files completion
- integration of [fasd](https://github.com/MenkeTechnologies/fasd-simple) frecency database into _files completion
- zsh menucompletion for [z](https://github.com/MenkeTechnologies/zsh-z) command based on frecency [z](https://github.com/MenkeTechnologies/zsh-z) and [fasd](https://github.com/MenkeTechnologies/fasd-simple) databases
- keybindings to save to mysql learning table [zsh-learn](https://github.com/MenkeTechnologies/zsh-learn)
- functions `zpwr searchl` to search from mysql learning table [zsh-learn](https://github.com/MenkeTechnologies/zsh-learn)
- `zpwr redo ` prints to prompt SQL update statements for learning items [zsh-learn](https://github.com/MenkeTechnologies/zsh-learn)
- `zpwr redosql ` prints to vim SQL update statements for learning items that run once vim is quit [zsh-learn](https://github.com/MenkeTechnologies/zsh-learn)
- zle keybinding formats newlines and spaces before saving to mysql learning database [zsh-learn](https://github.com/MenkeTechnologies/zsh-learn)
- zsh plugins loading based on OS
- zsh functions autoloading based on OS
- tmux keybindings and scripts based on OS
- custom ZPWR banner with latest commit and tag when `zpwr update`, `zpwr banner` or `zpwr about` and `$ZPWR_INSTALL/zpwrInstall.sh` run
- custom banners when new shell is launched `ZPWR_BANNER_COMMAND`
- zle sed sub widget to replace globally on current command line [zsh-sed-sub](https://github.com/MenkeTechnologies/zsh-sed-sub)
- expanded vim text objects on command line
- vim extract method from visual selection for shell, perl and python scripts (`gv` to select extracted)
- vim extract variable under cursor for shell, perl and python scripts (`gv` to select extracted)
- vim extract variable from visual selection for shell, perl and python scripts (`gv` to select extracted)
- vim autohighlight word under cursor after delay like JetBrains IDEs
- software updater script, `source ~/.zpwr/scripts/autoUpdater.sh`, on 24 hour loop
- colorized side diffs on zsh keybinding before git push [zsh-git-acp](https://github.com/MenkeTechnologies/zsh-git-acp)
- zsh keybindings to git add, commit and push with commit message from current command line [zsh-git-acp](https://github.com/MenkeTechnologies/zsh-git-acp)
- git commit blacklisted directories [zsh-git-acp](https://github.com/MenkeTechnologies/zsh-git-acp)
- zle quote swapper widget
- zsh, tmux and vim keybindings to copy/paste to system clipboard
- shell function to pull down latest code changes from this repo with `zpwr update`
- shell function that is wrapper around bat that works with text, jars, tgz, rpm, deb and zips with `zpwr cat` or `c`
- shell function uses same shell code to generate output that default FZF preview pane does with `zpwr cat` or `c`
- shell function automatically runs sudo when file is not readable with `zpwr cat` or `c`
- shell function that cds to any of parent directories with zsh completion with `zpwr cdup` or `r`
- zpwrClearList function that run clear and ls and show stats for commands, files, aliases, functions etc
- color-coded, grouped zpwrClearList zsh completion
- search google from tmux mouse drag selection (tmux's copy-mode-vi)
- open URLs and files from tmux mouse drag selection (tmux's copy-mode-vi)
- zpwr subcommands count with `zpwr verbscount`
- zpwr subcommands into fzf then execed with `zpwr verbs`
- zpwr subcommands into fzf with `zpwr verbsedit` then onto command line
- zpwr environment counts with `zpwr envcounts`
- centralized FZF preview pane customization with environment variables
- environment variables in ZPWR namespace in vim YCM completion from ctags generated `~/tags`
- systemd functions for starting/enabling, stopping/disabling service with zsh completion
- systemd service, poll.service, that polls github and download latest zpwr code
- systemd service, learn.service, that runs learning collection API
- restart function that launches poll.service and learn by enabling and starting in systemd
- 2.8k+ line README
- 50k+ LOC

## ZPWR Dependencies
- zsh
- tmux
- neovim with 79 plugins and python3/node support
- perl
- bash (4.0+, 3.2 not supported)
- zinit with 95+ plugins of which 30+ are custom
- forked powerlevel10k zsh prompt with ~dirs
- youcompleteme
- ultisnips
- supertab
- pathogen
- vundle
- iftop-color
- htop
- ccze
- rust/cargo
- rustup
- exa
- bat
- fd-find
- thumbs
- ripgrep
- cargo-update
- go
- fzf
- gotop
- lolcat
- python3
- powerline-status for tmux
- vim-airline status bar
- grc
- mycli
- pgcli
- ponysay
- pygments

# Supported Operating Systems:
- macOS
- raspbian
- debian
- mx linux
- garuda
- popos!
- freebsd
- kali
- fedora
- oraclelinux
- centos
- debian
- alpine
- arch
- artix
- manjaro
- arcolinux
- endeavouros
- mint
- zorin
- parrot OS
- WSL ubuntu/kali/suse/leap/fedora
- SUSE
- AMI

## ZPWR Extras Not Installed
- JetBrains .ideamvimrc
- JetBrains plugin list
- JetBrains settings zip
- JetBrains JVM Options idea.vmoptions
- Spacemacs Config with 490+ packages in .spacemacs
- Emacs Yasnippets
- Alacritty Main Config
- Alacritty Color Theme
- macOS Terminal Color Theme
- gtags from zpwr and .globalrc
- .gitconfig and .gitignore_global

## Limited Install
```sh
git clone --depth 1 -- https://github.com/MenkeTechnologies/zpwr.git ~/.zpwr && cd ~/.zpwr/install && ./zpwrInstall.sh -c
```
This will install just config files not dependencies.

You can then run each install shell script in `~/.zpwr/install` manually to install just vim plugins or cargo packages etc.

## Install Destination

All zpwr custom configs will be installed to `~/.zpwr` by default. This is the `ZPWR` environment variable. `~/.zshrc`, `~/.vimrc`, `~/.tmux.conf` and other config files are sym linked into home dir to be read by the respective program.
Your old configs for these files will be found in a directory name approximately `~/.zpwr/local/username.rc.bak.date` after install. Exact directory name is generated as shown.
```sh
backupdir="$ZPWR_HIDDEN_DIR/$USER.rc.bak.$(date +'%m.%d.%Y')"
```
Installer artifacts such as log files and cloned repos go into `~/.zpwr/local/installer`.

## Uninstall

Run `zpwr uninstall`. This will ask for confirmation before moving backups dirs to `$HOME`, unlinking all configs from `$HOME` and deleting all config dirs.

OR

1. Run `zpwr rmconfiglinks` (`zpwrUnlinkConf`) to unlink all zpwr config symlinks.
2. Copy all configs from backup dir mentioned above to home directory most importantly the `.zshrc`, `.vimrc` and `.tmux.conf`.
3. Remove the zpwr dir as shown.
```sh
rm -rf ~/.zpwr
```
This will not uninstall packages installed by system package manager, pip modules, gems, vim plugins, tmux plugins and zsh plugins.
You must remove these manually if desired.
If desired you can also uninstall zinit with ```rm -rf ~/.zinit```. Make sure `~/.zshrc` and other config files in `$HOME` are original versions.

## Font
You need to change the Terminal font to display the Powerline triangles and other special characters in the Powerlevel10k `$PROMPT`.

The installer installs Hack Nerd Font on the Mac with Homebrew and Powerline Symbols on Linux. Consult your terminal emulator
documentation for details on how to change the font.

## Updating
`zpwr updateall` (`zua`) links all zpwr config files, updates zpwr and zsh plugins, regens all caches and updates all dependencies.

### zpwr update and zpwrLinkConf functions
There is a shell function called `zpwr update` that will update ZPWR by pulling the latest changes from this repository into `~/.zpwr`, links all zpwr config files and updates all zsh plugins.
It invokes `zpwr regenconfiglinks` (`zpwrLinkConf`) which sym links `~/.zshrc`, `~/.vimrc` and `~/.tmux.conf` and some other miscellaneous configuration files into `$HOME`.

## Tmux prefix
The default tmux prefix key is C-a (control-a) on macOS so one can control inner tmux sessions (inside tmux session login to another computer and attach to its tmux session) on Linux/UNIX (prefix is C-b) separately.
To invoke C-a in the shell press C-a twice or to invoke C-b press C-b twice.
The left most segment of the tmux powerline status bar will be highlighted when the prefix is pressed and dehighlight when prefix is deactivated.
You change the prefixes in `~/.zpwr/local/.tokens.sh` with these environment variables.
```sh
# the tmux prefix on mac
export ZPWR_TMUX_PREFIX_MAC='C-a'
# the tmux prefix on linux
export ZPWR_TMUX_PREFIX_LINUX='C-b'
```

## Autosaving Vim Plugins
One of the vim plugin is vim-autosave which autosaves all edits thus making `:w` unnecessary.
`:u 0` in vim command(colon) mode will reset all changes in buffer which will then be autosaved.

## Auto List Completions
`zpwr startauto [delay]` will start automatically listing completion choices. `zpwr stopauto` will disable this. ZPWR_AUTO_COMPLETE will turn this on permanently with ZPWR_AUTO_COMPLETE_DELAY as delay time.
```sh
# list completion choices automatically
export ZPWR_AUTO_COMPLETE=false
# delay before listing completion choices automatically
export ZPWR_AUTO_COMPLETE_DELAY=3.0
```

## Bypassing expansion on space
C-Space (Control-Space or actually the ^@ terminal escape code) will bypass all expansion of globbing, aliases and words.
Expansion can be disabled entirely by adding `zinit unload MenkeTechnologies/zsh-expand &>/dev/null` to `~/.zpwr/local/.tokens-post.sh` or removing [zsh-expand](https://github.com/MenkeTechnologies/zsh-expand) from ZPWR_GH_PLUGINS array in `~/.zpwr/local/.tokens.sh`.

> ~/.zpwr/local/.tokens-post.sh
```sh
zinit unload MenkeTechnologies/zsh-expand &>/dev/null
```

OR

> ~/.zpwr/local/.tokens.sh
```sh
ZPWR_GH_PLUGINS[$ZPWR_GH_PLUGINS[(i)MenkeTechnologies/zsh-expand]]=()

```

Alternatively, change these env vars to false in `~/.zpwr/local/.tokens.sh`. The first turn off expansion in any position.
The second variable turns off expansion in second position. For example with sudo/zpwr/env in the first position and the alias to expand in the second position on the command line. The third turn offs glob/history/param etc expansion in any position. The fourth turns off spelling correction in any position.
> ~/.zpwr/local/.tokens.sh
```sh
# disable all expansion
export ZPWR_EXPAND=false
# aliases expand in second position after sudo
export ZPWR_EXPAND_SECOND_POSITION=false
# expand globs, history etc with zle expand-word
export ZPWR_EXPAND_NATIVE=false
# spelling correction in zsh-expand plugin
export ZPWR_CORRECT=false
# expand inside "
export ZPWR_EXPAND_QUOTE_DOUBLE=true
# expand inside '
export ZPWR_EXPAND_QUOTE_SINGLE=false
```

## Turning off ponies (default is off) and colors globally
To turn off all ponysay ponies, colored groups and colored group descriptions, add to tokens file.
> ~/.zpwr/local/.tokens.sh
```sh
# ponysay banner when shell startup finishes
export ZPWR_BANNER_TYPE=noponies
# output is more colorful
export ZPWR_COLORS=false
# colored section headers
export ZPWR_COLORS_SECTIONS=false
```

## Running script from vim in tmux right pane is supported for these languages
> ~/.vimrc
```vim
let supportedTypes=['sh','zsh', 'cr','py','rb','pl', 'clj', 'tcl', 'vim', 'lisp', 'hs', 'ml', 'coffee', 'swift', 'lua', 'java', 'f90']
```

File ending of currently edited file in vim determines the interpreter used by the bash script `$ZPWR_SCRIPTS/runner.sh` which defaults to `~/.zpwr/scripts/runner.sh`

## Tmux Main Window
The main window show in the screenshots is started by prefix-D (tmux prefix definition mentioned above) in an empty tmux window. This sources a tmux script `~/.zpwr/tmux/control-window.conf`.
Alternatively you could invoke the script by prefix-: `source-file ~/.zpwr/tmux/control-window.conf` or in the terminal with `tmux source-file ~/.zpwr/tmux/control-window.conf` in an empty tmux pane.

## Personal Config
Startup shell files will source `~/.zpwr/local/.tokens.sh` before zsh config and zinit startup so you can put your additional code there. This file will not be overridden with the `zpwr update` shell function. You can override installer variables in this file before install. Because this file is sourced by bash installer and zsh startup you should check if the shell is zsh before any zsh only features like `zpwrIsZsh && myZshConfig`. Startup shell files will source `~/.zpwr/local/.tokens-post.sh` after all zsh config and zinit startup.

To use a different .vimrc and/or tmux.conf, set these environment variables to absolute path of custom configs and then `zpwr regenconfiglinks`.

> ~/.zpwr/local/.tokens.sh
```sh
# user tmux.conf file
export ZPWR_TMUXRC="$HOME/.tmux.conf"
# user vimrc file
export ZPWR_VIMRC="$HOME/.vimrc"
```

Running `zpwr regen` will regenerate all cache files in `~/.zpwr/local` and create a ctags file named `~/tags` in your home directory.
YCM (vim code completion engine) will source this file (`autocmd filetype * set tags+=~/tags` includes `~/tags`), while providing completion so ZPWR env vars vim code completion in `~/.zpwr/local/.tokens.sh` should work. Inside vim `]` will jump to definition of the tag in the preview window.

## zpwr verbs
Typing `zpwr ` will invoked zsh menucompletion for zpwr verbs/subcommands. These subcommands invoke other shell functions passing all args. `zpwr verbs` will list them all in fzf and then execute selected verbs (fzf multiselection is enabled). `zpwr verbsedit` puts selected verbs onto command line for editing.

## ZPWR_GITHUB_ACCOUNT variable
Change in `~/.zpwr/local/.tokens.sh`
```sh
export ZPWR_GITHUB_ACCOUNT='MenkeTechnologies'
```
to match your GitHub account name to enable various functionality with your account like `zpwr github`, `zpwr githubcreate` and `zpwr githubdelete` shell functions for opening your GitHub home page, creating and deleting GitHub repos from the command line respectively.

## Adding more Zinit plugins
Add in `~/.zpwr/local/.tokens-post.sh` your extra plugins like such
```sh
zinit ice lucid nocompile wait'0a'
zinit load \
hlissner/zsh-autopair
```

## Environment Variables
These are environment variables set in `~/.zpwr/env/.zpwr_env.sh` and `~/.zpwr/env/.zpwr_re_env.sh` which you can override in your `~/.zpwr/local/.tokens.sh` to customize the behavior of the terminal setup. The file `~/.zpwr/env/.zpwr_re_env.sh` is reread after user tokens file to update environment variables that depend on previous variables that could change in user token file.
```sh
# Global Environment Variables for ZPWR by MenkeTechnologies
# More Environment Variables in ~/.zpwr/env/.shell_aliases_functions.sh near top of file
# override in ~/.zpwr/local/.tokens.sh, ~/.zpwr/local is git ignored
# see README.md
# linux OS SSH auto attach to tmux sessions
export ZPWR_AUTO_ATTACH=true
# list completion choices automatically
export ZPWR_AUTO_COMPLETE=false
# delay before listing completion choices automatically
export ZPWR_AUTO_COMPLETE_DELAY=3.0
# run ls after rm and other modifying commands such as touch automatically
export ZPWR_AUTO_LS_RM=true
# run ls after cd automatically
export ZPWR_AUTO_LS_CD=true
# auto select first item of menuselect
export ZPWR_AUTO_SELECT=true
# clear and ls before and after banner
export ZPWR_BANNER_CLEARLIST=true
# cd to Desktop after banner Darwin
export ZPWR_BANNER_DESKTOP_DARWIN=false
# cd to Desktop after banner Linux
export ZPWR_BANNER_DESKTOP_LINUX=true
# ponysay banner when shell startup finishes
export ZPWR_BANNER_TYPE=ponies
# bat (syntax highlighting) theme
export ZPWR_BAT_THEME='GitHub'
# this the description separator in compsys option completions (ls -)
# and the separator for function se() between row number and learning
export ZPWR_CHAR_LOGO='<<)(>>'
# group description leading chars
export ZPWR_DESC_PRE='-<<'
# group description trailing chars
export ZPWR_DESC_POST='>>-'
# group description text color ANSI codes
export ZPWR_DESC_TEXT_COLOR='34'
# group description leading chars color ANSI codes
export ZPWR_DESC_PRE_COLOR='1;31'
# group description trailing chars color ANSI codes
export ZPWR_DESC_POST_COLOR='1;31'
# output is more colorful
export ZPWR_COLORS=true
# colored section headers
export ZPWR_COLORS_SECTIONS=true
# zpwr is more colorful
export ZPWR_COLORS_VERBS=true
# common colors ANSI codes
export ZPWR_COLOR_BLUE="\x1b[37;44m"
export ZPWR_COLOR_RED="\x1b[31m"
export ZPWR_COLOR_RESET="\x1b[0m"
# ANSI styling codes for git commits
export ZPWR_COMMIT_STYLE='1;37;45'
# named compsys colors zsh pattern and ANSI codes
export ZPWR_NAMED_COLORS='=(#b)(*)=1;37;46'
# file prefix compsys colors
export ZPWR_COMMON_ZSTYLE_OPTS='reply=("${PREFIX:+=(#bi)($PREFIX:t)(?)(*)==37;45=37;43=34}:${(s.:.)LS_COLORS}")'
# sudo prefix to add when you get permission denied
export ZPWR_SUDO_CMD='sudo -E'
# sudo for aliases and expansion
export ZPWR_FULL_SUDO='"builtin" "command" "sudo" -E "env" PATH="$PATH"'
# the repo name for more zsh compsys completions
export ZPWR_COMPLETION_DIR='zsh-more-completions'
# spelling correction in zsh-expand plugin
export ZPWR_CORRECT=true
# aliases expand after spelling correction
export ZPWR_CORRECT_EXPAND=true
# turns on debugging logs using zpwrLogDebug function
export ZPWR_DEBUG=false
# default OMZ theme if Powerlevel 10k not used
export ZPWR_DEFAULT_OMZ_THEME=simonoff
# for alternating pretty printer
export ZPWR_DELIMITER_CHAR='%'
# the default vim command, override in tokens file
export ZPWR_VIM='nvim'
# set EDITOR to $ZPWR_VIM command
export ZPWR_EDITOR_TO_VIM='true'
# the emacs command
export ZPWR_EMACS='command emacs -nw'
# the emacs client command
export ZPWR_EMACS_CLIENT='emacsclient -c -nw -a ""'
# exa command invoked from zpwrClearList shows extended attributes
export ZPWR_EXA_EXTENDED=true
# enable all expansion
export ZPWR_EXPAND=true
# aliases expand in second position after sudo
export ZPWR_EXPAND_SECOND_POSITION=true
# expand globs, history etc with zle expand-word
export ZPWR_EXPAND_NATIVE=true
# aliases expand before command line is accepted
export ZPWR_EXPAND_PRE_EXEC=true
# globs etc expand before command line is accepted
export ZPWR_EXPAND_PRE_EXEC_NATIVE=false
# second pos expand before command line is accepted
export ZPWR_EXPAND_PRE_EXEC_SECOND_POSITION=true
# expand inside "
export ZPWR_EXPAND_QUOTE_DOUBLE=true
# expand inside '
export ZPWR_EXPAND_QUOTE_SINGLE=false
# command for fd
export ZPWR_FD='command fd --follow --type file --threads 8'
# command for all fzf
export ZPWR_FZF='fzf --ansi'
# prompt for all fzf
export ZPWR_FZF_LOGO='<<)ZPWR(>>'
# GH username
export ZPWR_GITHUB_ACCOUNT='MenkeTechnologies'
# the char that prefixes global aliases like je
export ZPWR_GLOBAL_ALIAS_PREFIX=j
# whether to search interactively in menuselect
export ZPWR_INTERACTIVE_MENU_SELECT=true
# timeout for keybindings
export ZPWR_KEYTIMEOUT=10
# whether to include all the zpwr learning functions
export ZPWR_LEARN=true
# zpwrLogColor function underscore color ANSI codes
export ZPWR_LOG_UNDER_COLOR='\x1b[0;34m'
# zpwrLogColor function quote color
export ZPWR_LOG_QUOTE_COLOR='\x1b[0;35m'
# zpwrLogColor function timestamp color
export ZPWR_LOG_DATE_COLOR='\x1b[0;32;44m'
# zpwrLogColor function message color
export ZPWR_LOG_MSG_COLOR='\x1b[0;37;45m'
# when true vim normal mode C-V mapped to exec current file in right tmux pane
export ZPWR_MAP_C_V_VIM_NORMAL=false
# the marker found color in bat output into fzf from ag search ANSI codes
export ZPWR_MARKER_COLOR='0;1;4;37;44m'
# default value for pygmentize theme
export ZPWR_PYGMENTIZE_COLOR="emacs"
# zpwr colorizer = bat or pygmentize
export ZPWR_COLORIZER=bat
# zsh options set in precmd fn before prompt
export ZPWR_OPTS=
# the OS of the host
export ZPWR_OS_TYPE="$(uname -s | tr A-Z a-z)"
# plugin framework
export ZPWR_PLUGIN_MANAGER=zinit
# global python version
export ZPWR_PYTHON='python3.10'
# uses the zprof function to profile startup
export ZPWR_PROFILING=false
# set to POWERLEVEL to use the powerlevel10k prompt
export ZPWR_PROMPT=powerlevel10k
# pssh timeout
export ZPWR_PSSH_TIMEOUT=0
# git colored output cmd prefix
export ZPWR_GIT_COLOR_PREFIX="git -c color.status=always -c color.ui=always --no-pager"
# char to separate log messages
export ZPWR_QUOTE_START_CHAR='<<('
# char to separate log messages
export ZPWR_QUOTE_END_CHAR=')>>'
# maybe z4ze
export ZPWR_REPO_NAME='zpwr'
# when true sends every char to synced panes
# when false does not send enter and Control to synced panes
export ZPWR_SEND_KEYS_FULL=false
# how long to sleep after display of counts in zpwr display of all
export ZPWR_LOOK_TIME=5
# set to comma separated list of pane numbers
# to activate sending to numbered tmux panes
export ZPWR_SEND_KEYS_PANE=-1
# typing leading quote, paren, bracket inserts trailing after caret
export ZPWR_SURROUND=true
# the string that marks a tabstop when expanding aliases
export ZPWR_TABSTOP=__________
# include tabstop aliases
export ZPWR_TABSTOP_ALIASES=true
# the tmux prefix on mac
export ZPWR_TMUX_PREFIX_MAC='C-a'
# the tmux prefix on linux
export ZPWR_TMUX_PREFIX_LINUX='C-b'
# the tmux copy mode history limit
export ZPWR_TMUX_HISTORY_LIMIT=30000
# turns on set -x in critical regions
export ZPWR_TRACE=false
# add header template to certain filetypes in vim
export ZPWR_VIM_TEMPLATES=true
# use bindkey -v
export ZPWR_BINDKEY_VI=true
# delay between shell start and compinit
export ZPWR_ZINIT_COMPINIT_DELAY=0
# username for zdharma
export ZPWR_ZDHARMA="zdharma-continuum"
# regex for tmux thumbs
export ZPWR_THUMBS_REGEX='^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
((?:[a-z0-9]+(?:-[a-z0-9]+)*\.)+[a-z]{2,})(?::.*)?'
# store tty for faster prompt
export ZPWR_TTY=$(tty)
```

```sh
if [[ $ZPWR_PLUGIN_MANAGER == zinit ]]; then
zpwrEvalIfNeeded ZPWR_PLUGIN_MANAGER_HOME "$ZPWR_PLUGIN_MANAGER_HOME" "$HOME/.zinit" "$HOME"
export ZSH="$ZPWR_PLUGIN_MANAGER_HOME"
zpwrEvalIfNeeded ZSH_CUSTOM "$ZSH_CUSTOM" "$ZSH" "$ZSH"
elif [[ $ZPWR_PLUGIN_MANAGER == oh-my-zsh ]]; then
zpwrEvalIfNeeded ZPWR_PLUGIN_MANAGER_HOME "$ZPWR_PLUGIN_MANAGER_HOME" "$HOME/.oh-my-zsh" "$HOME"
export ZSH="$ZPWR_PLUGIN_MANAGER_HOME"
zpwrEvalIfNeeded ZSH_CUSTOM "$ZSH_CUSTOM" "$ZSH/custom" "$ZSH"
fi

# fzf dir
zpwrEvalIfNeeded ZPWR_FZF_DIR "$ZPWR_FZF_DIR" "$ZSH_CUSTOM/plugins/fzf" "$ZSH"
# local file ignored by git
zpwrEvalIfNeeded ZPWR_LOCAL "$ZPWR_LOCAL" "$ZPWR/local" "$ZPWR"
# plugin misc cache files
zpwrEvalIfNeeded ZSH_CACHE_DIR "$ZSH_CACHE_DIR" "$ZPWR_LOCAL/.cache" "$ZPWR_LOCAL"
# alias and function file bash compatible
zpwrEvalIfNeeded ZPWR_ALIAS_FILE "$ZPWR_ALIAS_FILE" "$ZPWR_ENV/.shell_aliases_functions.sh" "$ZPWR_ENV"
# autoloaded non completion functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD "$ZPWR_AUTOLOAD" "$ZPWR/autoload" "$ZPWR"
# autoloaded common non completion functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_COMMON "$ZPWR_AUTOLOAD_COMMON" "$ZPWR_AUTOLOAD/common" "$ZPWR_AUTOLOAD"
# autoloaded common completion but completion helper functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_COMPS "$ZPWR_AUTOLOAD_COMPS " "$ZPWR_AUTOLOAD/comps" "$ZPWR_AUTOLOAD"
# autoloaded common non completion but completion helper functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_COMP_UTILS "$ZPWR_AUTOLOAD_COMP_UTILS " "$ZPWR_AUTOLOAD/comp_utils" "$ZPWR_AUTOLOAD"
# autoloaded darwin non completion functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_DARWIN "$ZPWR_AUTOLOAD_DARWIN" "$ZPWR_AUTOLOAD/darwin" "$ZPWR_AUTOLOAD"
# autoloaded fzf helper functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_FZF "$ZPWR_AUTOLOAD_FZF" "$ZPWR_AUTOLOAD/fzf" "$ZPWR_AUTOLOAD"
# autoloaded linux non completion functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_LINUX "$ZPWR_AUTOLOAD_LINUX" "$ZPWR_AUTOLOAD/linux" "$ZPWR_AUTOLOAD"
# autoloaded systemctl non completion functions
zpwrEvalIfNeeded ZPWR_AUTOLOAD_SYSTEMCTL "$ZPWR_AUTOLOAD_SYSTEMTCTL" "$ZPWR_AUTOLOAD/systemctl" "$ZPWR_AUTOLOAD"
# autoloaded completion functions
zpwrEvalIfNeeded ZPWR_COMPS "$ZPWR_COMPS" "$ZPWR/autoload/comps" "$ZPWR"
# cross OS comand file
zpwrEvalIfNeeded ZPWR_CROSS_OS_CMD "$ZPWR_CROSS_OS" "$ZPWR_SCRIPTS/crossOSCommands.sh" "$ZPWR_SCRIPTS"
# cross OS fn file
zpwrEvalIfNeeded ZPWR_CROSS_OS_EXE "$ZPWR_CROSS_OS" "$ZPWR_SCRIPTS/crossOSExecute.sh" "$ZPWR_SCRIPTS"
# the location of macOS only associated interpreted scripts
# custom plugin dir
zpwrEvalIfNeeded ZPWR_PLUGIN_DIR "$ZPWR_PLUGIN_DIR" "$ZSH_CUSTOM/plugins" "$ZSH_CUSTOM"
# fzf custom plugin dir
zpwrEvalIfNeeded ZPWR_ZINIT_FZF "$ZPWR_ZINIT_FZF" "$ZPWR_PLUGIN_DIR/MenkeTechnologies---fzf" "$ZPWR_PLUGIN_DIR"
# same as zpwr local
zpwrEvalIfNeeded ZPWR_HIDDEN_DIR "$ZPWR_HIDDEN_DIR" "$ZPWR/local" "$ZPWR"
# private tokens file sourced before
zpwrEvalIfNeeded ZPWR_TOKEN_PRE "$ZPWR_TOKEN_PRE" "$ZPWR_LOCAL/.tokens.sh" "$ZPWR_LOCAL"
# private tokens file sourced after
zpwrEvalIfNeeded ZPWR_TOKEN_POST "$ZPWR_TOKEN_POST" "$ZPWR_LOCAL/.tokens-post.sh" "$ZPWR_LOCAL"
zpwrEvalIfNeeded ZPWR_TEST "$ZPWR_TEST" "$ZPWR/tests" "$ZPWR"
# zpwr install files
zpwrEvalIfNeeded ZPWR_INSTALL "$ZPWR_INSTALL" "$ZPWR/install" "$ZPWR"
# user tmux.conf file
zpwrEvalIfNeeded ZPWR_TMUXRC "$ZPWR_TMUXRC" "$ZPWR_INSTALL/.tmux.conf" "$ZPWR_INSTALL"
# user vimrc file
zpwrEvalIfNeeded ZPWR_VIMRC "$ZPWR_VIMRC" "$ZPWR_INSTALL/.vimrc" "$ZPWR_INSTALL"
# user ideavimrc file
zpwrEvalIfNeeded ZPWR_IDEAVIMRC "$ZPWR_IDEAVIMRC" "$ZPWR_INSTALL/.ideavimrc" "$ZPWR_INSTALL"
# zpwr tmux config files
zpwrEvalIfNeeded ZPWR_TMUX "$ZPWR_TMUX" "$ZPWR/tmux" "$ZPWR"
# zpwr tmux git ignored files
zpwrEvalIfNeeded ZPWR_TMUX_LOCAL "$ZPWR_TMUX_LOCAL" "$ZPWR_TMUX/local" "$ZPWR_TMUX"
# the base path for zsh temp
zpwrEvalIfNeeded TMPPREFIX "$TMPPREFIX" "$ZPWR_LOCAL/.temp/zsh" "$ZPWR_LOCAL"
# the base dir for zpwr temp
zpwrEvalIfNeeded ZPWR_LOCAL_TEMP "$ZPWR_LOCAL_TEMP" "$ZPWR_LOCAL/.temp" "$ZPWR_LOCAL"
# the path to a lock file (semaphore) for zpwr
zpwrEvalIfNeeded ZPWR_LOCK_FILE "$ZPWR_LOCK_FILE" "$ZPWR_LOCAL/.lock" "$ZPWR_LOCAL"
# cache file for all zpwr env lookups
zpwrEvalIfNeeded ZPWR_LOCAL_ENV "$ZPWR_LOCAL_ENV" "$ZPWR_LOCAL/zpwrEnv" "$ZPWR_LOCAL"
# forked powerlevel10k config file for PROMPT
zpwrEvalIfNeeded ZPWR_PROMPT_FILE "$ZPWR_PROMPT_FILE" "$ZPWR_ENV/.p10k.zsh" "$ZPWR_ENV"
# the location of associated interpreted scripts
zpwrEvalIfNeeded ZPWR_SCRIPTS "$ZPWR_SCRIPTS" "$ZPWR/scripts" "$ZPWR"
# the location of macOS only associated interpreted scripts
zpwrEvalIfNeeded ZPWR_SCRIPTS_MAC "$ZPWR_SCRIPTS_MAC" "$ZPWR_SCRIPTS/macOnly" "$ZPWR_SCRIPTS"
# the location of zpwr verbs setup script
zpwrEvalIfNeeded ZPWR_VERBS_FILE "$ZPWR_VERBS_FILE" "$ZPWR_SCRIPTS/zpwr.zsh" "$ZPWR_SCRIPTS"
# the location of zpwr lib file
zpwrEvalIfNeeded ZPWR_LIB "$ZPWR_LIB" "$ZPWR_SCRIPTS/lib.sh" "$ZPWR_SCRIPTS"
# the location of zpwr init file
zpwrEvalIfNeeded ZPWR_LIB_INIT "$ZPWR_LIB_INIT" "$ZPWR_SCRIPTS/init.sh" "$ZPWR_SCRIPTS"
# command for all fzf clearlist in preview pane
zpwrEvalIfNeeded ZPWR_FZF_CLEARLIST "$ZPWR_FZF_CLEARLIST" "zsh $ZPWR_SCRIPTS/zpwrClearList.zsh -- \\\$file | fold -s -w 80" "$ZPWR_SCRIPTS"
# the file used to find most recent files opened in neovim
zpwrEvalIfNeeded ZPWR_NVIMINFO "$ZPWR_NVIMINFO" "$ZPWR_LOCAL/.nviminfo" "$ZPWR_LOCAL"
# emacs recent files
zpwrEvalIfNeeded ZPWR_RECENTF "$ZPWR_RECENTF" "$HOME/.emacs.d/.cache/recentf" "$HOME"
# alternate banner to ponysay
zpwrEvalIfNeeded ZPWR_BANNER_COMMAND "$ZPWR_BANNER_COMMAND" "bash $ZPWR_SCRIPTS_MAC/figletRandomFontOnce.sh $(hostname)" "$ZPWR_SCRIPTS_MAC"
# zpwr banner file location
zpwrEvalIfNeeded ZPWR_BANNER_SCRIPT "$ZPWR_BANNER_SCRIPT" "$ZPWR_SCRIPTS/about.sh" "$ZPWR_SCRIPTS"
# cache of git dirs
zpwrEvalIfNeeded ZPWR_ALL_GIT_DIRS "$ZPWR_ALL_GIT_DIRS" "$ZPWR_LOCAL/zpwrGitDirs.txt" "$ZPWR_LOCAL"
# cache of clean git dirs
zpwrEvalIfNeeded ZPWR_ALL_GIT_DIRS_CLEAN "$ZPWR_ALL_GIT_DIRS_CLEAN" "$ZPWR_LOCAL/zpwrGitDirsClean.txt" "$ZPWR_LOCAL"
# cache of dirty git dirs
zpwrEvalIfNeeded ZPWR_ALL_GIT_DIRS_DIRTY "$ZPWR_ALL_GIT_DIRS_DIRTY" "$ZPWR_LOCAL/zpwrGitDirsDirty.txt" "$ZPWR_LOCAL"
# log file
zpwrEvalIfNeeded ZPWR_LOGFILE "$ZPWR_LOGFILE" "$ZPWR_LOCAL/zpwrLog.txt" "$ZPWR_LOCAL"
# cache of env keys
zpwrEvalIfNeeded ZPWR_ENV_KEY_FILE "$ZPWR_ENV_KEY_FILE" "${ZPWR_LOCAL_ENV}Key.txt" "$ZPWR_LOCAL_ENV"
# cache of env values
zpwrEvalIfNeeded ZPWR_ENV_VALUE_FILE "$ZPWR_ENV_VALUE_FILE" "${ZPWR_LOCAL_ENV}Value.txt" "$ZPWR_LOCAL_ENV"
# temp files
zpwrEvalIfNeeded ZPWR_TEMPFILE "$ZPWR_TEMPFILE" "$ZPWR_LOCAL_TEMP/.temp$$-$USER" "$ZPWR_LOCAL_TEMP" "$USER"
zpwrEvalIfNeeded ZPWR_TEMPFILE1 "$ZPWR_TEMPFILE1" "$ZPWR_LOCAL_TEMP/.temp$$-1$USER" "$ZPWR_LOCAL_TEMP" "$USER"
zpwrEvalIfNeeded ZPWR_TEMPFILE2 "$ZPWR_TEMPFILE2" "$ZPWR_LOCAL_TEMP/.temp$$-2$USER" "$ZPWR_LOCAL_TEMP" "$USER"
zpwrEvalIfNeeded ZPWR_TEMPFILE3 "$ZPWR_TEMPFILE3" "$ZPWR_LOCAL_TEMP/.temp$$-3$USER" "$ZPWR_LOCAL_TEMP" "$USER"
zpwrEvalIfNeeded ZPWR_TEMPFILE4 "$ZPWR_TEMPFILE4" "$ZPWR_LOCAL_TEMP/.temp$$-4$USER" "$ZPWR_LOCAL_TEMP" "$USER"
zpwrEvalIfNeeded ZPWR_TEMPFILE_PROCESSED "$ZPWR_TEMPFILE_PROCESSED" "$ZPWR_LOCAL_TEMP/.temp$$-processed$USER" "$ZPWR_LOCAL_TEMP" "$USER"
# SQL temp files for use with learning collection
zpwrEvalIfNeeded ZPWR_TEMPFILE_SQL "$ZPWR_TEMPFILE_SQL" "$ZPWR_LOCAL_TEMP/.temp$$-2$USER.sql" "$ZPWR_LOCAL_TEMP" "$USER"
# last tmux window text capture
zpwrEvalIfNeeded ZPWR_TMUX_CAPTURE "$ZPWR_TMUX_CAPTURE" "$ZPWR_TMUX_LOCAL/tmux-capture-$$-$USER" "$ZPWR_TMUX_LOCAL" "$USER"
# socket for IPC
zpwrEvalIfNeeded ZPWR_SOCKET "$ZPWR_SOCKET" "$ZPWR_LOCAL_TEMP/.temp-$USER-socket" "$ZPWR_LOCAL_TEMP" "$USER"
# fifo for IPC
zpwrEvalIfNeeded ZPWR_FIFO "$ZPWR_FIFO" "$ZPWR_LOCAL_TEMP/.temp-$USER-fifo" "$ZPWR_LOCAL_TEMP" "$USER"
# zsh compsys completion system dir for cached completions
zpwrEvalIfNeeded ZPWR_COMPSYS_CACHE "$ZPWR_COMPSYS_CACHE" "$ZPWR_LOCAL/zcompcache" "$ZPWR_LOCAL"
# compsys cache file
zpwrEvalIfNeeded ZSH_COMPDUMP "$ZSH_COMPDUMP" "$ZPWR_LOCAL/.zcompdump-$ZPWR_REPO_NAME-$ZPWR_GITHUB_ACCOUNT" "$ZPWR_LOCAL" "$ZPWR_REPO_NAME" "$ZPWR_GITHUB_ACCOUNT"
# forked repos dir
zpwrEvalIfNeeded ZPWR_FORKED_DIR "$ZPWR_FORKED_DIR" "$HOME/forkedRepos" "$HOME"
# common dirs
zpwrEvalIfNeeded ZPWR_D "$ZPWR_D" "$HOME/Desktop" "$HOME"
zpwrEvalIfNeeded ZPWR_DOC "$ZPWR_DOC" "$HOME/Documents" "$HOME"
zpwrEvalIfNeeded ZPWR_DL "$ZPWR_DL" "$HOME/Downloads" "$HOME"
# history file
zpwrEvalIfNeeded HISTFILE "$HISTFILE" "$ZPWR_LOCAL/.$ZPWR_REPO_NAME-$ZPWR_GITHUB_ACCOUNT-history" "$ZPWR_LOCAL" "$ZPWR_REPO_NAME" "$ZPWR_GITHUB_ACCOUNT"
# the path for vim keybindings cache
zpwrEvalIfNeeded ZPWR_VIM_KEYBINDINGS "$ZPWR_VIM_KEYBINDINGS" "$ZPWR_LOCAL/zpwrVimKeybindings.txt" "$ZPWR_LOCAL"
# the path for all keybindings cache
zpwrEvalIfNeeded ZPWR_ALL_KEYBINDINGS "$ZPWR_ALL_KEYBINDINGS" "$ZPWR_LOCAL/zpwrAllKeybindings.txt" "$ZPWR_LOCAL"
# build GitHub URL
zpwrEvalIfNeeded ZPWR_GITHUB_URL "$ZPWR_GITHUB_URL" "https://github.com/$ZPWR_GITHUB_ACCOUNT" "$ZPWR_GITHUB_ACCOUNT"
```

## Tests
You can run zpwr unit tests via `zpwr test` and include plugin tests wth `zpwr testall`.

There is also the alias `tru` (tests run) to run the tests.
```sh
zpwrExists zunit && {
alias tru="( builtin cd $ZPWR && zunit --verbose )"
}
```

## Shell Startup speed
Running `zpwr recompile` will zrecompile all zpwr configs and all autoloaded functions and compsys completions in fpath. `zpwr refreshzwc` will remove old .zwc files before zrecompile. This will maximize startup and running speed. `~/.zpwr/autoload` contains ZPWR autoloaded functions and `~/.zpwr/autoload/comps` contains autoloaded compsys functions.

With Zinit Turbo mode, despite the number of plugins and completions, startup usually takes < 1 second on faster machines (.15 to .2 seconds on M1 Max) but up to 2-10 seconds on slow machines such as WSL. Zinit runs compinit in the background after startup and you will experience a brief lockup (unnoticeable if `zpwr regenzsh` and `zpwr recompile` have run to create .zcompdump.zwc). This variable controls the delay between prompt and compinit.
```sh
export ZPWR_ZINIT_COMPINIT_DELAY=0
```
## Contributing
I am looking for contributors mostly for documentation, marketing, video tutorials, GIFs/screenshots in README and expanding the tests.

## Warnings
Moving scripts from `$ZPWR_SCRIPTS` which defaults to `~/.zpwr/scripts` and `$ZPWR_TMUX` which defaults to `~/.zpwr/tmux` will break a lot of functionality because vim and tmux configurations depend on these scipts for advanced features. The only user modifiable files are the user token files.

# Running on a MacbookPro
![Alt text](https://menketechnologies.github.io/img/tmuxfinal22.png?raw=true)
![Alt text](https://menketechnologies.github.io/img/tmux-scripts.png)
# Running on the Raspberry Pi 3
![Alt text](https://menketechnologies.github.io/img/tmuxfinal3.png?raw=true)
![Alt text](https://menketechnologies.github.io/img/tmuxfinal4.png?raw=true)
# Running on the Rock64
![Final 5](https://menketechnologies.github.io/img/tmuxfinal5.jpg?raw=true)

## Keybindings generated with `source keybindingsToREADME.zsh >> README.md`

# Tmux keybindings (tmux lsk)
- ``` bind-key -T copy-mode C-Space send-keys -X begin-selection ```
- ``` bind-key -T copy-mode C-a send-keys -X start-of-line ```
- ``` bind-key -T copy-mode C-b send-keys -X cursor-left ```
- ``` bind-key -T copy-mode C-c send-keys -X cancel ```
- ``` bind-key -T copy-mode C-e send-keys -X end-of-line ```
- ``` bind-key -T copy-mode C-f send-keys -X cursor-right ```
- ``` bind-key -T copy-mode C-g send-keys -X clear-selection ```
- ``` bind-key -T copy-mode C-k send-keys -X copy-end-of-line ```
- ``` bind-key -T copy-mode C-n send-keys -X cursor-down ```
- ``` bind-key -T copy-mode C-p send-keys -X cursor-up ```
- ``` bind-key -T copy-mode C-r command-prompt -i -I "#{pane_search_string}" -p "(search up)" "send -X search-backward-incremental \"%%%\"" ```
- ``` bind-key -T copy-mode C-s command-prompt -i -I "#{pane_search_string}" -p "(search down)" "send -X search-forward-incremental \"%%%\"" ```
- ``` bind-key -T copy-mode C-v send-keys -X page-down ```
- ``` bind-key -T copy-mode C-w send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode Escape send-keys -X cancel ```
- ``` bind-key -T copy-mode Space send-keys -X page-down ```
- ``` bind-key -T copy-mode , send-keys -X jump-reverse ```
- ``` bind-key -T copy-mode \; send-keys -X jump-again ```
- ``` bind-key -T copy-mode F command-prompt -1 -p "(jump backward)" "send -X jump-backward \"%%%\"" ```
- ``` bind-key -T copy-mode N send-keys -X search-reverse ```
- ``` bind-key -T copy-mode R send-keys -X rectangle-toggle ```
- ``` bind-key -T copy-mode T command-prompt -1 -p "(jump to backward)" "send -X jump-to-backward \"%%%\"" ```
- ``` bind-key -T copy-mode X send-keys -X set-mark ```
- ``` bind-key -T copy-mode f command-prompt -1 -p "(jump forward)" "send -X jump-forward \"%%%\"" ```
- ``` bind-key -T copy-mode g command-prompt -p "(goto line)" "send -X goto-line \"%%%\"" ```
- ``` bind-key -T copy-mode n send-keys -X search-again ```
- ``` bind-key -T copy-mode q send-keys -X cancel ```
- ``` bind-key -T copy-mode r send-keys -X refresh-from-pane ```
- ``` bind-key -T copy-mode t command-prompt -1 -p "(jump to forward)" "send -X jump-to-forward \"%%%\"" ```
- ``` bind-key -T copy-mode MouseDown1Pane select-pane ```
- ``` bind-key -T copy-mode MouseDrag1Pane select-pane \; send-keys -X begin-selection ```
- ``` bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode WheelUpPane select-pane \; send-keys -X -N 5 scroll-up ```
- ``` bind-key -T copy-mode WheelDownPane select-pane \; send-keys -X -N 5 scroll-down ```
- ``` bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode Home send-keys -X start-of-line ```
- ``` bind-key -T copy-mode End send-keys -X end-of-line ```
- ``` bind-key -T copy-mode NPage send-keys -X page-down ```
- ``` bind-key -T copy-mode PPage send-keys -X page-up ```
- ``` bind-key -T copy-mode Up send-keys -X cursor-up ```
- ``` bind-key -T copy-mode Down send-keys -X cursor-down ```
- ``` bind-key -T copy-mode Left send-keys -X cursor-left ```
- ``` bind-key -T copy-mode Right send-keys -X cursor-right ```
- ``` bind-key -T copy-mode M-C-b send-keys -X previous-matching-bracket ```
- ``` bind-key -T copy-mode M-C-f send-keys -X next-matching-bracket ```
- ``` bind-key -T copy-mode M-1 command-prompt -N -I 1 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-2 command-prompt -N -I 2 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-3 command-prompt -N -I 3 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-4 command-prompt -N -I 4 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-5 command-prompt -N -I 5 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-6 command-prompt -N -I 6 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-7 command-prompt -N -I 7 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-8 command-prompt -N -I 8 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-9 command-prompt -N -I 9 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode M-< send-keys -X history-top ```
- ``` bind-key -T copy-mode M-> send-keys -X history-bottom ```
- ``` bind-key -T copy-mode M-R send-keys -X top-line ```
- ``` bind-key -T copy-mode M-b send-keys -X previous-word ```
- ``` bind-key -T copy-mode M-f send-keys -X next-word-end ```
- ``` bind-key -T copy-mode M-m send-keys -X back-to-indentation ```
- ``` bind-key -T copy-mode M-r send-keys -X middle-line ```
- ``` bind-key -T copy-mode M-v send-keys -X page-up ```
- ``` bind-key -T copy-mode M-w send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode M-x send-keys -X jump-to-mark ```
- ``` bind-key -T copy-mode "M-{" send-keys -X previous-paragraph ```
- ``` bind-key -T copy-mode "M-}" send-keys -X next-paragraph ```
- ``` bind-key -T copy-mode M-Up send-keys -X halfpage-up ```
- ``` bind-key -T copy-mode M-Down send-keys -X halfpage-down ```
- ``` bind-key -T copy-mode C-Up send-keys -X scroll-up ```
- ``` bind-key -T copy-mode C-Down send-keys -X scroll-down ```
- ``` bind-key -T copy-mode-vi C-b send-keys -X page-up ```
- ``` bind-key -T copy-mode-vi C-c send-keys -X cancel ```
- ``` bind-key -T copy-mode-vi C-d send-keys -X halfpage-down ```
- ``` bind-key -T copy-mode-vi C-e send-keys -X scroll-down ```
- ``` bind-key -T copy-mode-vi C-f send-keys -X page-down ```
- ``` bind-key -T copy-mode-vi C-h send-keys -X -N 4 cursor-left ```
- ``` bind-key -T copy-mode-vi C-j send-keys -X -N 4 cursor-down ```
- ``` bind-key -T copy-mode-vi C-k send-keys -X -N 4 cursor-up ```
- ``` bind-key -T copy-mode-vi C-l send-keys -X -N 4 cursor-right ```
- ``` bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy" ```
- ``` bind-key -T copy-mode-vi C-n send-keys -X page-down ```
- ``` bind-key -T copy-mode-vi C-p send-keys -X page-up ```
- ``` bind-key -T copy-mode-vi C-u send-keys -X halfpage-up ```
- ``` bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle ```
- ``` bind-key -T copy-mode-vi C-y send-keys -X scroll-up ```
- ``` bind-key -T copy-mode-vi Escape send-keys -X clear-selection ```
- ``` bind-key -T copy-mode-vi Space send-keys -X begin-selection ```
- ``` bind-key -T copy-mode-vi \# send-keys -FX search-backward "#{copy_cursor_word}" ```
- ``` bind-key -T copy-mode-vi \$ send-keys -X end-of-line ```
- ``` bind-key -T copy-mode-vi % send-keys -X next-matching-bracket ```
- ``` bind-key -T copy-mode-vi * send-keys -FX search-forward "#{copy_cursor_word}" ```
- ``` bind-key -T copy-mode-vi , send-keys -X jump-reverse ```
- ``` bind-key -T copy-mode-vi / command-prompt -i -p "(search down)" "send -X search-forward-incremental \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 0 send-keys -X start-of-line ```
- ``` bind-key -T copy-mode-vi 1 command-prompt -N -I 1 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 2 command-prompt -N -I 2 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 3 command-prompt -N -I 3 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 4 command-prompt -N -I 4 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 5 command-prompt -N -I 5 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 6 command-prompt -N -I 6 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 7 command-prompt -N -I 7 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 8 command-prompt -N -I 8 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi 9 command-prompt -N -I 9 -p (repeat) "send -N \"%%%\"" ```
- ``` bind-key -T copy-mode-vi : command-prompt -p "(goto line)" "send -X goto-line \"%%%\"" ```
- ``` bind-key -T copy-mode-vi \; send-keys -X jump-again ```
- ``` bind-key -T copy-mode-vi ? command-prompt -i -p "(search up)" "send -X search-backward-incremental \"%%%\"" ```
- ``` bind-key -T copy-mode-vi A send-keys -X append-selection-and-cancel ```
- ``` bind-key -T copy-mode-vi B send-keys -X previous-space ```
- ``` bind-key -T copy-mode-vi D send-keys -X copy-end-of-line ```
- ``` bind-key -T copy-mode-vi E send-keys -X next-space-end ```
- ``` bind-key -T copy-mode-vi F command-prompt -1 -p "(jump backward)" "send -X jump-backward \"%%%\"" ```
- ``` bind-key -T copy-mode-vi G send-keys -X history-bottom ```
- ``` bind-key -T copy-mode-vi H send-keys -X top-line ```
- ``` bind-key -T copy-mode-vi J send-keys -X scroll-down ```
- ``` bind-key -T copy-mode-vi K send-keys -X scroll-up ```
- ``` bind-key -T copy-mode-vi L send-keys -X bottom-line ```
- ``` bind-key -T copy-mode-vi M send-keys -X middle-line ```
- ``` bind-key -T copy-mode-vi N send-keys -X search-reverse ```
- ``` bind-key -T copy-mode-vi T command-prompt -1 -p "(jump to backward)" "send -X jump-to-backward \"%%%\"" ```
- ``` bind-key -T copy-mode-vi V send-keys -X select-line ```
- ``` bind-key -T copy-mode-vi W send-keys -X next-space ```
- ``` bind-key -T copy-mode-vi X send-keys -X set-mark ```
- ``` bind-key -T copy-mode-vi ^ send-keys -X back-to-indentation ```
- ``` bind-key -T copy-mode-vi b send-keys -X previous-word ```
- ``` bind-key -T copy-mode-vi e send-keys -X next-word-end ```
- ``` bind-key -T copy-mode-vi f command-prompt -1 -p "(jump forward)" "send -X jump-forward \"%%%\"" ```
- ``` bind-key -T copy-mode-vi g send-keys -X history-top ```
- ``` bind-key -T copy-mode-vi h send-keys -X cursor-left ```
- ``` bind-key -T copy-mode-vi j send-keys -X cursor-down ```
- ``` bind-key -T copy-mode-vi k send-keys -X cursor-up ```
- ``` bind-key -T copy-mode-vi l send-keys -X cursor-right ```
- ``` bind-key -T copy-mode-vi n send-keys -X search-again ```
- ``` bind-key -T copy-mode-vi o send-keys -X other-end ```
- ``` bind-key -T copy-mode-vi q send-keys -X cancel ```
- ``` bind-key -T copy-mode-vi r send-keys -X refresh-from-pane ```
- ``` bind-key -T copy-mode-vi s send-keys -X copy-pipe-no-clear "reattach-to-user-namespace pbcopy" \; run-shell "reattach-to-user-namespace bash ~/.zpwr/tmux/google.sh google" ```
- ``` bind-key -T copy-mode-vi t command-prompt -1 -p "(jump to forward)" "send -X jump-to-forward \"%%%\"" ```
- ``` bind-key -T copy-mode-vi v send-keys -X begin-selection ```
- ``` bind-key -T copy-mode-vi w send-keys -X next-word ```
- ``` bind-key -T copy-mode-vi x send-keys -X copy-pipe-no-clear "reattach-to-user-namespace pbcopy" \; display-message -F "current pane directory #{pane_current_path}" \; run-shell "tmux display-message -p -F \"#{pane_current_path}\" > \$ZPWR_TMUX_LOCAL/pane_pwd" \; run-shell "reattach-to-user-namespace bash ~/.zpwr/tmux/google.sh open" ```
- ``` bind-key -T copy-mode-vi y send-keys -X copy-pipe-no-clear "reattach-to-user-namespace pbcopy" ```
- ``` bind-key -T copy-mode-vi z send-keys -X copy-pipe-no-clear "reattach-to-user-namespace pbcopy" \; run-shell "reattach-to-user-namespace bash ~/.zpwr/tmux/google.sh google" ```
- ``` bind-key -T copy-mode-vi \{ send-keys -X previous-paragraph ```
- ``` bind-key -T copy-mode-vi \} send-keys -X next-paragraph ```
- ``` bind-key -T copy-mode-vi MouseDown1Pane select-pane ```
- ``` bind-key -T copy-mode-vi MouseDown3Pane send-keys -X copy-pipe-no-clear "reattach-to-user-namespace pbcopy" \; run-shell "reattach-to-user-namespace bash ~/.zpwr/tmux/google.sh google" ```
- ``` bind-key -T copy-mode-vi MouseDrag1Pane select-pane \; send-keys -X begin-selection ```
- ``` bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 5 scroll-up ```
- ``` bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 5 scroll-down ```
- ``` bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel ```
- ``` bind-key -T copy-mode-vi BSpace send-keys -X cursor-left ```
- ``` bind-key -T copy-mode-vi NPage send-keys -X page-down ```
- ``` bind-key -T copy-mode-vi PPage send-keys -X page-up ```
- ``` bind-key -T copy-mode-vi Up send-keys -X cursor-up ```
- ``` bind-key -T copy-mode-vi Down send-keys -X cursor-down ```
- ``` bind-key -T copy-mode-vi Left send-keys -X cursor-left ```
- ``` bind-key -T copy-mode-vi Right send-keys -X cursor-right ```
- ``` bind-key -T copy-mode-vi M-x send-keys -X jump-to-mark ```
- ``` bind-key -T copy-mode-vi C-Up send-keys -X scroll-up ```
- ``` bind-key -T copy-mode-vi C-Down send-keys -X scroll-down ```
- ``` bind-key -T prefix C-a send-prefix ```
- ``` bind-key -T prefix C-n next-window ```
- ``` bind-key -T prefix C-o rotate-window ```
- ``` bind-key -T prefix C-p previous-window ```
- ``` bind-key -T prefix C-r run-shell ~/.tmux/plugins/tmux-resurrect/scripts/restore.sh ```
- ``` bind-key -T prefix C-s run-shell ~/.tmux/plugins/tmux-resurrect/scripts/save.sh ```
- ``` bind-key -T prefix C-v run-shell "tmux set buffer \"$(reattach-to-user-namespace pbpaste)\"; tmux paste-buffer" ```
- ``` bind-key -T prefix C-z suspend-client ```
- ``` bind-key -T prefix C-] send-keys ^] ```
- ``` bind-key -T prefix Space run-shell -b "~/.zpwr/scripts/allPanes.zsh single" ```
- ``` bind-key -T prefix ! break-pane ```
- ``` bind-key -T prefix \" split-window ```
- ``` bind-key -T prefix \# list-buffers ```
- ``` bind-key -T prefix \$ command-prompt -I "#S" "rename-session -- '%%'" ```
- ``` bind-key -T prefix % split-window -h ```
- ``` bind-key -T prefix & confirm-before -p "kill-window #W? (y/n)" kill-window ```
- ``` bind-key -T prefix \' command-prompt -W -p index "select-window -t ':%%'" ```
- ``` bind-key -r -T prefix ( switch-client -p ```
- ``` bind-key -r -T prefix ) switch-client -n ```
- ``` bind-key -T prefix + split-window -v -c "#{pane_current_path}" \; select-pane -l \; kill-pane ```
- ``` bind-key -T prefix , command-prompt -I "#W" "rename-window -- '%%'" ```
- ``` bind-key -T prefix - split-window -v -c "#{pane_current_path}" ```
- ``` bind-key -T prefix . command-prompt -T "move-window -t '%%'" ```
- ``` bind-key -T prefix / command-prompt -k -p key "list-keys -1N \"%%%\"" ```
- ``` bind-key -T prefix 0 select-window -t :=0 ```
- ``` bind-key -T prefix 1 select-window -t :=1 ```
- ``` bind-key -T prefix 2 select-window -t :=2 ```
- ``` bind-key -T prefix 3 select-window -t :=3 ```
- ``` bind-key -T prefix 4 select-window -t :=4 ```
- ``` bind-key -T prefix 5 select-window -t :=5 ```
- ``` bind-key -T prefix 6 select-window -t :=6 ```
- ``` bind-key -T prefix 7 select-window -t :=7 ```
- ``` bind-key -T prefix 8 select-window -t :=8 ```
- ``` bind-key -T prefix 9 select-window -t :=9 ```
- ``` bind-key -T prefix : command-prompt ```
- ``` bind-key -T prefix \; last-pane ```
- ``` bind-key -T prefix < display-menu -T "#[align=centre]#{window_index}:#{window_name}" -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l "swap-window -t:-1" "#{?#{>:#{session_windows},1},,-}Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window '' Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" '' "New After" w "new-window -a" "New At End" W new-window ```
- ``` bind-key -T prefix = choose-buffer -Z ```
- ``` bind-key -T prefix > display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -x P -y P "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < "send -X history-top" "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > "send -X history-bottom" '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r "if -F \"#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}\" \"copy-mode -t=\" ; send -Xt= search-backward \"#{q:mouse_word}\"" "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y "copy-mode -q ; send-keys -l -- \"#{q:mouse_word}\"" "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c "copy-mode -q ; set-buffer -- \"#{q:mouse_word}\"" "#{?mouse_line,Copy Line,}" l "copy-mode -q ; set-buffer -- \"#{q:mouse_line}\"" '' "Horizontal Split" h "split-window -h" "Vertical Split" v "split-window -v" '' "#{?#{>:#{window_panes},1},,-}Swap Up" u "swap-pane -U" "#{?#{>:#{window_panes},1},,-}Swap Down" d "swap-pane -D" "#{?pane_marked_set,,-}Swap Marked" s swap-pane '' Kill X kill-pane Respawn R "respawn-pane -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z "resize-pane -Z" ```
- ``` bind-key -T prefix ? list-keys -N ```
- ``` bind-key -T prefix C customize-mode -Z ```
- ``` bind-key -T prefix D source-file ~/.zpwr/tmux/control-window.conf ```
- ``` bind-key -T prefix E source-file ~/.zpwr/tmux/fourVertical.conf ```
- ``` bind-key -T prefix F source-file ~/.zpwr/tmux/four-panes.conf ```
- ``` bind-key -T prefix G source-file ~/.zpwr/tmux/eight-panes.conf ```
- ``` bind-key -r -T prefix H resize-pane -L 5 ```
- ``` bind-key -T prefix I run-shell ~/.tmux/plugins/tpm/bindings/install_plugins ```
- ``` bind-key -r -T prefix J resize-pane -D 5 ```
- ``` bind-key -r -T prefix K resize-pane -U 5 ```
- ``` bind-key -r -T prefix L resize-pane -R 5 ```
- ``` bind-key -T prefix M source-file ~/.zpwr/tmux/learn.conf ```
- ``` bind-key -T prefix O source-file ~/.zpwr/tmux/sixteen-panes.conf ```
- ``` bind-key -T prefix P paste-buffer ```
- ``` bind-key -T prefix R source-file ~/.zpwr/tmux/thirtytwo-panes-repl.conf ```
- ``` bind-key -T prefix S set-window-option synchronize-panes ```
- ``` bind-key -T prefix T source-file ~/.zpwr/tmux/config-files.conf ```
- ``` bind-key -T prefix U run-shell ~/.tmux/plugins/tpm/bindings/update_plugins ```
- ``` bind-key -T prefix Y split-window -v -c "#{pane_current_path}" \; select-pane -l \; kill-pane ```
- ``` bind-key -T prefix [ copy-mode ```
- ``` bind-key -T prefix \\ split-window -h -c "#{pane_current_path}" ```
- ``` bind-key -T prefix ] paste-buffer -p ```
- ``` bind-key -T prefix _ split-window -v ```
- ``` bind-key -T prefix a last-window ```
- ``` bind-key -T prefix b run-shell -b "~/.zpwr/scripts/allPanes.zsh single open" ```
- ``` bind-key -T prefix c new-window ```
- ``` bind-key -T prefix d detach-client ```
- ``` bind-key -T prefix e run-shell -b "~/.tmux/plugins/tmux-fzf-url/fzf-url.sh 30000 open" ```
- ``` bind-key -T prefix f command-prompt "find-window -Z -- '%%'" ```
- ``` bind-key -T prefix g run-shell -b "~/.zpwr/scripts/allPanes.zsh single google" ```
- ``` bind-key -r -T prefix h select-pane -L ```
- ``` bind-key -T prefix i display-message ```
- ``` bind-key -r -T prefix j select-pane -D ```
- ``` bind-key -r -T prefix k select-pane -U ```
- ``` bind-key -r -T prefix l select-pane -R ```
- ``` bind-key -T prefix m select-pane -m ```
- ``` bind-key -r -T prefix n next-window ```
- ``` bind-key -T prefix o select-pane -t :.+ ```
- ``` bind-key -r -T prefix p previous-window ```
- ``` bind-key -T prefix q display-panes -d 5000 ```
- ``` bind-key -T prefix r source-file ~/.zpwr/tmux/init.conf \; display-message "Tmux Reloaded!" \; copy-mode -q ```
- ``` bind-key -T prefix s choose-tree -Zs ```
- ``` bind-key -T prefix t clock-mode ```
- ``` bind-key -T prefix u run-shell -b "~/.tmux/plugins/tmux-fzf-url/fzf-url.sh 30000 search" ```
- ``` bind-key -T prefix v run-shell -b "~/.zpwr/scripts/allPanes.zsh multi" ```
- ``` bind-key -T prefix w choose-tree -Zw ```
- ``` bind-key -T prefix x kill-pane ```
- ``` bind-key -T prefix z resize-pane -Z ```
- ``` bind-key -r -T prefix \{ rotate-window ```
- ``` bind-key -T prefix | split-window -h ```
- ``` bind-key -T prefix \} swap-pane -D ```
- ``` bind-key -T prefix \~ show-messages ```
- ``` bind-key -r -T prefix DC refresh-client -c ```
- ``` bind-key -T prefix PPage copy-mode -u ```
- ``` bind-key -r -T prefix Up select-pane -U ```
- ``` bind-key -r -T prefix Down select-pane -D ```
- ``` bind-key -r -T prefix Left select-pane -L ```
- ``` bind-key -r -T prefix Right select-pane -R ```
- ``` bind-key -T prefix M-1 select-layout even-horizontal ```
- ``` bind-key -T prefix M-2 select-layout even-vertical ```
- ``` bind-key -T prefix M-3 select-layout main-horizontal ```
- ``` bind-key -T prefix M-4 select-layout main-vertical ```
- ``` bind-key -T prefix M-5 select-layout tiled ```
- ``` bind-key -T prefix M-n next-window -a ```
- ``` bind-key -T prefix M-o rotate-window -D ```
- ``` bind-key -T prefix M-p previous-window -a ```
- ``` bind-key -T prefix M-u run-shell ~/.tmux/plugins/tpm/bindings/clean_plugins ```
- ``` bind-key -r -T prefix M-Up resize-pane -U 5 ```
- ``` bind-key -r -T prefix M-Down resize-pane -D 5 ```
- ``` bind-key -r -T prefix M-Left resize-pane -L 5 ```
- ``` bind-key -r -T prefix M-Right resize-pane -R 5 ```
- ``` bind-key -r -T prefix C-Up resize-pane -U ```
- ``` bind-key -r -T prefix C-Down resize-pane -D ```
- ``` bind-key -r -T prefix C-Left resize-pane -L ```
- ``` bind-key -r -T prefix C-Right resize-pane -R ```
- ``` bind-key -r -T prefix S-Up refresh-client -U 10 ```
- ``` bind-key -r -T prefix S-Down refresh-client -D 10 ```
- ``` bind-key -r -T prefix S-Left refresh-client -L 10 ```
- ``` bind-key -r -T prefix S-Right refresh-client -R 10 ```
- ``` bind-key -T root C-\\ switch-client -n ```
- ``` bind-key -T root C-] switch-client -p ```
- ``` bind-key -T root MouseDown1Pane select-pane -t = \; send-keys -M ```
- ``` bind-key -T root MouseDown1Status select-window -t = ```
- ``` bind-key -T root MouseDown2Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" "send -M" "paste -p" ```
- ``` bind-key -T root MouseDown3Pane if-shell -F -t = "#{mouse_any_flag}" "select-pane -t=; send-keys -M" "select-pane -t=" ```
- ``` bind-key -T root MouseDown3Status display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l "swap-window -t:-1" "#{?#{>:#{session_windows},1},,-}Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window '' Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" '' "New After" w "new-window -a" "New At End" W new-window ```
- ``` bind-key -T root MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n "switch-client -n" Previous p "switch-client -p" '' Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" '' "New Session" s new-session "New Window" w new-window ```
- ``` bind-key -T root MouseDrag1Pane if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" "send -M" "copy-mode -M" ```
- ``` bind-key -T root MouseDrag1Border resize-pane -M ```
- ``` bind-key -T root WheelUpPane if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" "send -M" "copy-mode -e" ```
- ``` bind-key -T root WheelUpStatus previous-window ```
- ``` bind-key -T root WheelDownStatus next-window ```
- ``` bind-key -T root DoubleClick1Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" "send -M" "copy-mode -H ; send -X select-word ; run -d0.3 ; send -X copy-pipe-and-cancel" ```
- ``` bind-key -T root TripleClick1Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" "send -M" "copy-mode -H ; send -X select-line ; run -d0.3 ; send -X copy-pipe-and-cancel" ```
- ``` bind-key -T root M-MouseDown3Pane display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < "send -X history-top" "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > "send -X history-bottom" '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r "if -F \"#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}\" \"copy-mode -t=\" ; send -Xt= search-backward \"#{q:mouse_word}\"" "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y "copy-mode -q ; send-keys -l -- \"#{q:mouse_word}\"" "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c "copy-mode -q ; set-buffer -- \"#{q:mouse_word}\"" "#{?mouse_line,Copy Line,}" l "copy-mode -q ; set-buffer -- \"#{q:mouse_line}\"" '' "Horizontal Split" h "split-window -h" "Vertical Split" v "split-window -v" '' "#{?#{>:#{window_panes},1},,-}Swap Up" u "swap-pane -U" "#{?#{>:#{window_panes},1},,-}Swap Down" d "swap-pane -D" "#{?pane_marked_set,,-}Swap Marked" s swap-pane '' Kill X kill-pane Respawn R "respawn-pane -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z "resize-pane -Z" ```
- ``` bind-key -T root M-Up select-pane -U ```
- ``` bind-key -T root M-Down select-pane -D ```
- ``` bind-key -T root M-Left select-pane -L ```
- ``` bind-key -T root M-Right select-pane -R ```
# Zsh Vim Insert Mode keybindings (bindkey -M viins -L)
- ``` bindkey -M viins "^@" zpwrExpandTerminateSpace ```
- ``` bindkey -M viins "^A" beginning-of-line ```
- ``` bindkey -M viins "^B" zpwrClipboard ```
- ``` bindkey -M viins "^C" self-insert ```
- ``` bindkey -M viins "^D" list-choices ```
- ``` bindkey -M viins "^E" end-of-line ```
- ``` bindkey -M viins "^F^D" zpwrIntoFzf ```
- ``` bindkey -M viins "^F^F" zpwrVimFzfFilesearchWidgetAccept ```
- ``` bindkey -M viins "^F^G" zpwrGoogle ```
- ``` bindkey -M viins "^F^H" zpwrLsoffzf ```
- ``` bindkey -M viins "^F^I" zpwrIntoFzfAg ```
- ``` bindkey -M viins "^F^J" zpwrVerbsWidgetAccept ```
- ``` bindkey -M viins "^F^K" zpwrAlternateQuotes ```
- ``` bindkey -M viins "^F^L" list-choices ```
- ``` bindkey -M viins "^F^M" zzcomplete ```
- ``` bindkey -M viins "^F^N" zpwrVerbsWidget ```
- ``` bindkey -M viins "^F^O" zpwrOpen ```
- ``` bindkey -M viins "^F^P" basicSedSub ```
- ``` bindkey -M viins "^F^R" zpwrAsVar ```
- ``` bindkey -M viins "^F^S" zsh-gacp-CheckDiff ```
- ``` bindkey -M viins "^F^V" edit-command-line ```
- ``` bindkey -M viins "^Fj" zpwrVerbsWidgetAccept ```
- ``` bindkey -M viins "^Fn" zpwrVerbsWidget ```
- ``` bindkey -M viins "^G" what-cursor-position ```
- ``` bindkey -M viins "^H" autopair-delete ```
- ``` bindkey -M viins "^I" fzf-completion ```
- ``` bindkey -M viins "^J" accept-line ```
- ``` bindkey -M viins "^K" zsh-learn-Learn ```
- ``` bindkey -M viins "^L" clear-screen ```
- ``` bindkey -M viins "^M" zpwrMagicEnter ```
- ``` bindkey -M viins "^N" down-history ```
- ``` bindkey -M viins "^O" zpwrEOLorNextTabStop ```
- ``` bindkey -M viins "^O^I" zc-logo ```
- ``` bindkey -M viins "^O^Z" zui-demo-various ```
- ``` bindkey -M viins "^P" up-history ```
- ``` bindkey -M viins "^Q" zpwrLastWordDouble ```
- ``` bindkey -M viins "^R" fzf-history-widget ```
- ``` bindkey -M viins "^S" zsh-gacp-NoCheck ```
- ``` bindkey -M viins "^T" fzf-file-widget ```
- ``` bindkey -M viins "^U" zpwrClearLine ```
- ``` bindkey -M viins "^V^@" zpwrVimFzf ```
- ``` bindkey -M viins "^V^F" zpwrFasdFZF ```
- ``` bindkey -M viins "^V^G" fzf-cd-widget ```
- ``` bindkey -M viins "^V^K" zpwrEmacsFzf ```
- ``` bindkey -M viins "^V^L" zpwrZFZF ```
- ``` bindkey -M viins "^V^N" zpwrVimFzfSudo ```
- ``` bindkey -M viins "^V^O" fzf-tab-complete ```
- ``` bindkey -M viins "^V^P" sudo-command-line ```
- ``` bindkey -M viins "^V^R" history-search-multi-word ```
- ``` bindkey -M viins "^V^S" zpwrZFZF ```
- ``` bindkey -M viins "^V^V" zpwrVimAllWidgetAccept ```
- ``` bindkey -M viins "^V^Z" fzf-history-widget ```
- ``` bindkey -M viins "^V " zpwrVimFzf ```
- ``` bindkey -M viins "^V," zpwrFzfEnv ```
- ``` bindkey -M viins "^V." zpwrFzfAllKeybind ```
- ``` bindkey -M viins "^V/." zpwrLocateFzfEdit ```
- ``` bindkey -M viins "^V//" zpwrLocateFzf ```
- ``` bindkey -M viins "^V;" zpwrFzfSurround ```
- ``` bindkey -M viins "^Vc" zpwrFzfCommits ```
- ``` bindkey -M viins "^Vk" zpwrFzfVimKeybind ```
- ``` bindkey -M viins "^Vl" zpwrZFZF ```
- ``` bindkey -M viins "^Vm" zpwrVimAllWidget ```
- ``` bindkey -M viins "^Vv" zpwrVimAllWidgetAccept ```
- ``` bindkey -M viins "^W" vi-backward-kill-word ```
- ``` bindkey -M viins "^X^R" _read_comp ```
- ``` bindkey -M viins "^X^X" zpwrBufferXtrace ```
- ``` bindkey -M viins "^X?" _complete_debug ```
- ``` bindkey -M viins "^XC" _correct_filename ```
- ``` bindkey -M viins "^Xa" _expand_alias ```
- ``` bindkey -M viins "^Xc" _correct_word ```
- ``` bindkey -M viins "^Xd" _list_expansions ```
- ``` bindkey -M viins "^Xe" _expand_word ```
- ``` bindkey -M viins "^Xh" _complete_help ```
- ``` bindkey -M viins "^Xm" _most_recent_file ```
- ``` bindkey -M viins "^Xn" _next_tags ```
- ``` bindkey -M viins "^Xt" _complete_tag ```
- ``` bindkey -M viins "^X~" _bash_list-choices ```
- ``` bindkey -M viins "^Y" zpwrChangeQuotes ```
- ``` bindkey -M viins "^Z" undo ```
- ``` bindkey -M viins "^[" vi-cmd-mode ```
- ``` bindkey -M viins "^[^D" capitalize-word ```
- ``` bindkey -M viins "^[^E" zpwrExpandGlobalAliases ```
- ``` bindkey -M viins "^[^F" sub ```
- ``` bindkey -M viins "^[^L" down-case-word ```
- ``` bindkey -M viins "^[^M" self-insert-unmeta ```
- ``` bindkey -M viins "^[^O" zpwrRunner ```
- ``` bindkey -M viins "^[^P" zpwrUp8widget ```
- ``` bindkey -M viins "^[^T" transpose-words ```
- ``` bindkey -M viins "^[^U" up-case-word ```
- ``` bindkey -M viins "^[ " zpwrSshRegain ```
- ``` bindkey -M viins "^[," _history-complete-newer ```
- ``` bindkey -M viins "^[/" _history-complete-older ```
- ``` bindkey -M viins "^[OA" history-substring-search-up ```
- ``` bindkey -M viins "^[OB" history-substring-search-down ```
- ``` bindkey -M viins "^[OC" vi-forward-char ```
- ``` bindkey -M viins "^[OD" vi-backward-char ```
- ``` bindkey -M viins "^[OP" zpwrUp8widget ```
- ``` bindkey -M viins "^[OQ" sub ```
- ``` bindkey -M viins "^[OQ^[OQ" npm_toggle_install_uninstall ```
- ``` bindkey -M viins "^[OR" zpwrGetrcWidget ```
- ``` bindkey -M viins "^[[1;2D" sub ```
- ``` bindkey -M viins "^[[1;5A" zsh-gacp-CheckDiff ```
- ``` bindkey -M viins "^[[1;5B" zpwrUpdater ```
- ``` bindkey -M viins "^[[1;5C" zpwrTutsUpdate ```
- ``` bindkey -M viins "^[[1;5D" dbz ```
- ``` bindkey -M viins "^[[1~" beginning-of-line ```
- ``` bindkey -M viins "^[[200~" bracketed-paste ```
- ``` bindkey -M viins "^[[3~" delete-char ```
- ``` bindkey -M viins "^[[4~" end-of-line ```
- ``` bindkey -M viins "^[[5~" zpwrClipboard ```
- ``` bindkey -M viins "^[[A" history-substring-search-up ```
- ``` bindkey -M viins "^[[B" history-substring-search-down ```
- ``` bindkey -M viins "^[[C" vi-forward-char ```
- ``` bindkey -M viins "^[[D" vi-backward-char ```
- ``` bindkey -M viins "^[[Z" zpwrClipboard ```
- ``` bindkey -M viins "^[c" fzf-cd-widget ```
- ``` bindkey -M viins "^[man" man-command-line ```
- ``` bindkey -M viins "^[~" _bash_complete-word ```
- ``` bindkey -R -M viins "^\\\\"-"^_" self-insert ```
- ``` bindkey -M viins " " zpwrExpandSupernaturalSpace ```
- ``` bindkey -M viins "!" self-insert ```
- ``` bindkey -M viins "\"" zpwrInterceptSurround ```
- ``` bindkey -R -M viins "#"-"&" self-insert ```
- ``` bindkey -R -M viins "'"-"(" zpwrInterceptSurround ```
- ``` bindkey -M viins ")" autopair-close ```
- ``` bindkey -R -M viins "*"-"-" self-insert ```
- ``` bindkey -M viins "." zpwrRationalizeDot ```
- ``` bindkey -R -M viins "/"-"Z" self-insert ```
- ``` bindkey -M viins "[" zpwrInterceptSurround ```
- ``` bindkey -M viins "\\\\" self-insert ```
- ``` bindkey -M viins "]" autopair-close ```
- ``` bindkey -R -M viins "\^"-"_" self-insert ```
- ``` bindkey -M viins "\`" zpwrInterceptSurround ```
- ``` bindkey -R -M viins "a"-"f" self-insert ```
- ``` bindkey -M viins "fj" vi-cmd-mode ```
- ``` bindkey -R -M viins "g"-"j" self-insert ```
- ``` bindkey -M viins "jf" vi-cmd-mode ```
- ``` bindkey -R -M viins "k"-"z" self-insert ```
- ``` bindkey -M viins "{" zpwrInterceptSurround ```
- ``` bindkey -M viins "|" self-insert ```
- ``` bindkey -M viins "}" autopair-close ```
- ``` bindkey -M viins "~" self-insert ```
- ``` bindkey -M viins "^?" zpwrInterceptDelete ```
- ``` bindkey -R -M viins "\M-^@"-"\M-^?" self-insert ```
# Zsh Vim Normal Mode keybindings (bindkey -M vicmd -L)
- ``` bindkey -a "^A" beginning-of-line ```
- ``` bindkey -a "^B" zpwrClipboard ```
- ``` bindkey -a "^D" list-choices ```
- ``` bindkey -a "^E" end-of-line ```
- ``` bindkey -a "^F^D" zpwrIntoFzf ```
- ``` bindkey -a "^F^F" zpwrVimFzfFilesearchWidgetAccept ```
- ``` bindkey -a "^F^G" zpwrGoogle ```
- ``` bindkey -a "^F^H" zpwrLsoffzf ```
- ``` bindkey -a "^F^I" zpwrIntoFzfAg ```
- ``` bindkey -a "^F^J" zpwrVerbsWidgetAccept ```
- ``` bindkey -a "^F^K" zpwrAlternateQuotes ```
- ``` bindkey -a "^F^L" list-choices ```
- ``` bindkey -a "^F^M" zzcomplete ```
- ``` bindkey -a "^F^N" zpwrVerbsWidget ```
- ``` bindkey -a "^F^O" zpwrOpen ```
- ``` bindkey -a "^F^P" basicSedSub ```
- ``` bindkey -a "^F^R" zpwrAsVar ```
- ``` bindkey -a "^F^S" zsh-gacp-CheckDiff ```
- ``` bindkey -a "^F^V" edit-command-line ```
- ``` bindkey -a "^Fj" zpwrVerbsWidgetAccept ```
- ``` bindkey -a "^Fn" zpwrVerbsWidget ```
- ``` bindkey -a "^G" what-cursor-position ```
- ``` bindkey -a "^H" vi-backward-char ```
- ``` bindkey -a "^I" zpwrExpandOrCompleteWithDots ```
- ``` bindkey -a "^J" accept-line ```
- ``` bindkey -a "^K" zsh-learn-Learn ```
- ``` bindkey -a "^L" clear-screen ```
- ``` bindkey -a "^M" zpwrMagicEnter ```
- ``` bindkey -a "^N" down-history ```
- ``` bindkey -a "^O" zpwrEOLorNextTabStop ```
- ``` bindkey -a "^P" up-history ```
- ``` bindkey -a "^Q" zpwrLastWordDouble ```
- ``` bindkey -a "^R" redo ```
- ``` bindkey -a "^S" zsh-gacp-NoCheck ```
- ``` bindkey -a "^T" transpose-chars ```
- ``` bindkey -a "^U" zpwrClearLine ```
- ``` bindkey -a "^V^@" zpwrVimFzf ```
- ``` bindkey -a "^V^F" zpwrFasdFZF ```
- ``` bindkey -a "^V^G" fzf-cd-widget ```
- ``` bindkey -a "^V^K" zpwrEmacsFzf ```
- ``` bindkey -a "^V^L" zpwrZFZF ```
- ``` bindkey -a "^V^N" zpwrVimFzfSudo ```
- ``` bindkey -a "^V^O" fzf-tab-complete ```
- ``` bindkey -a "^V^P" sudo-command-line ```
- ``` bindkey -a "^V^R" history-search-multi-word ```
- ``` bindkey -a "^V^S" zpwrZFZF ```
- ``` bindkey -a "^V^V" zpwrVimAllWidgetAccept ```
- ``` bindkey -a "^V^Z" fzf-history-widget ```
- ``` bindkey -a "^V " zpwrVimFzf ```
- ``` bindkey -a "^V," zpwrFzfEnv ```
- ``` bindkey -a "^V." zpwrFzfAllKeybind ```
- ``` bindkey -a "^V/." zpwrLocateFzfEdit ```
- ``` bindkey -a "^V//" zpwrLocateFzf ```
- ``` bindkey -a "^V;" zpwrFzfSurround ```
- ``` bindkey -a "^Vc" zpwrFzfCommits ```
- ``` bindkey -a "^Vl" zpwrZFZF ```
- ``` bindkey -a "^Vm" zpwrVimAllWidget ```
- ``` bindkey -a "^Vv" zpwrVimAllWidgetAccept ```
- ``` bindkey -a "^W" zpwrDeleteLastWord ```
- ``` bindkey -a "^X^X" zpwrBufferXtrace ```
- ``` bindkey -a "^Y" zpwrChangeQuotes ```
- ``` bindkey -a "^Z" undo ```
- ``` bindkey -a "^[" beep ```
- ``` bindkey -a "^[^D" capitalize-word ```
- ``` bindkey -a "^[^L" down-case-word ```
- ``` bindkey -a "^[^O" zpwrRunner ```
- ``` bindkey -a "^[^P" zpwrUp8widget ```
- ``` bindkey -a "^[^T" transpose-words ```
- ``` bindkey -a "^[^U" up-case-word ```
- ``` bindkey -a "^[ " zpwrSshRegain ```
- ``` bindkey -a "^[OA" up-line-or-history ```
- ``` bindkey -a "^[OB" down-line-or-history ```
- ``` bindkey -a "^[OC" vi-forward-char ```
- ``` bindkey -a "^[OD" vi-backward-char ```
- ``` bindkey -a "^[OQ^[OQ" npm_toggle_install_uninstall ```
- ``` bindkey -a "^[[200~" bracketed-paste ```
- ``` bindkey -a "^[[A" up-line-or-history ```
- ``` bindkey -a "^[[B" down-line-or-history ```
- ``` bindkey -a "^[[C" vi-forward-char ```
- ``` bindkey -a "^[[D" vi-backward-char ```
- ``` bindkey -a " " vi-forward-char ```
- ``` bindkey -a "\"" vi-set-buffer ```
- ``` bindkey -a "#" pound-insert ```
- ``` bindkey -a "\$" vi-end-of-line ```
- ``` bindkey -a "%" vi-match-bracket ```
- ``` bindkey -a "'" vi-goto-mark-line ```
- ``` bindkey -a "+" vi-down-line-or-history ```
- ``` bindkey -a "," vi-rev-repeat-find ```
- ``` bindkey -a -- "-" vi-up-line-or-history ```
- ``` bindkey -a "." vi-repeat-change ```
- ``` bindkey -a "/" vi-history-search-backward ```
- ``` bindkey -a "0" vi-digit-or-beginning-of-line ```
- ``` bindkey -R -a "1"-"9" digit-argument ```
- ``` bindkey -a ":" execute-named-cmd ```
- ``` bindkey -a ";" vi-repeat-find ```
- ``` bindkey -a "<" vi-unindent ```
- ``` bindkey -a "=" list-choices ```
- ``` bindkey -a ">" vi-indent ```
- ``` bindkey -a "?" vi-history-search-forward ```
- ``` bindkey -a "A" vi-add-eol ```
- ``` bindkey -a "B" vi-backward-blank-word ```
- ``` bindkey -a "C" vi-change-eol ```
- ``` bindkey -a "D" vi-kill-eol ```
- ``` bindkey -a "E" vi-forward-blank-word-end ```
- ``` bindkey -a "F" vi-find-prev-char ```
- ``` bindkey -a "G" end-of-buffer-or-history ```
- ``` bindkey -a "I" vi-insert-bol ```
- ``` bindkey -a "J" vi-join ```
- ``` bindkey -a "N" vi-rev-repeat-search ```
- ``` bindkey -a "O" vi-open-line-above ```
- ``` bindkey -a "P" vi-put-before ```
- ``` bindkey -a "R" vi-replace ```
- ``` bindkey -a "S" vi-change-whole-line ```
- ``` bindkey -a "T" vi-find-prev-char-skip ```
- ``` bindkey -a "V" visual-line-mode ```
- ``` bindkey -a "W" vi-forward-blank-word ```
- ``` bindkey -a "X" vi-backward-delete-char ```
- ``` bindkey -a "Y" vi-yank-whole-line ```
- ``` bindkey -a "\^" vi-first-non-blank ```
- ``` bindkey -a "\`" vi-goto-mark ```
- ``` bindkey -a "a" vi-add-next ```
- ``` bindkey -a "b" vi-backward-word ```
- ``` bindkey -a "c" vi-change ```
- ``` bindkey -a "d" vi-delete ```
- ``` bindkey -a "e" vi-forward-word-end ```
- ``` bindkey -a "f" vi-find-next-char ```
- ``` bindkey -a "gE" vi-backward-blank-word-end ```
- ``` bindkey -a "gU" vi-up-case ```
- ``` bindkey -s -a "gUU" "gUgU" ```
- ``` bindkey -a "ga" what-cursor-position ```
- ``` bindkey -a "ge" vi-backward-word-end ```
- ``` bindkey -a "gg" beginning-of-buffer-or-history ```
- ``` bindkey -a "gu" vi-down-case ```
- ``` bindkey -s -a "guu" "gugu" ```
- ``` bindkey -a "g~" vi-oper-swap-case ```
- ``` bindkey -s -a "g~~" "g~g~" ```
- ``` bindkey -a "h" vi-backward-char ```
- ``` bindkey -a "i" vi-insert ```
- ``` bindkey -a "j" down-line-or-history ```
- ``` bindkey -a "k" up-line-or-history ```
- ``` bindkey -a "l" vi-forward-char ```
- ``` bindkey -a "m" vi-set-mark ```
- ``` bindkey -a "n" vi-repeat-search ```
- ``` bindkey -a "o" vi-open-line-below ```
- ``` bindkey -a "p" vi-put-after ```
- ``` bindkey -a "r" vi-replace-chars ```
- ``` bindkey -a "s" vi-substitute ```
- ``` bindkey -a "t" vi-find-next-char-skip ```
- ``` bindkey -a "u" undo ```
- ``` bindkey -a "v" visual-mode ```
- ``` bindkey -a "w" vi-forward-word ```
- ``` bindkey -a "x" vi-delete-char ```
- ``` bindkey -a "y" vi-yank ```
- ``` bindkey -a "|" vi-goto-column ```
- ``` bindkey -a "~" vi-swap-case ```
- ``` bindkey -a "^?" vi-backward-char ```
# Zsh Menuselect Mode keybindings (bindkey -M menuselect -L)
- ``` bindkey -M menuselect "^@" accept-line ```
- ``` bindkey -M menuselect "^D" accept-and-menu-complete ```
- ``` bindkey -M menuselect "^F" accept-and-infer-next-history ```
- ``` bindkey -M menuselect "^H" vi-backward-char ```
- ``` bindkey -M menuselect "^I" vi-forward-char ```
- ``` bindkey -M menuselect "^J" down-history ```
- ``` bindkey -M menuselect "^K" up-history ```
- ``` bindkey -M menuselect "^L" vi-forward-char ```
- ``` bindkey -M menuselect "^M" .accept-line ```
- ``` bindkey -M menuselect "^N" vi-forward-word ```
- ``` bindkey -M menuselect "^P" vi-backward-word ```
- ``` bindkey -M menuselect "^S" reverse-menu-complete ```
- ``` bindkey -M menuselect "^V" vi-insert ```
- ``` bindkey -M menuselect "^X" history-incremental-search-forward ```
- ``` bindkey -M menuselect "^[OA" up-line-or-history ```
- ``` bindkey -M menuselect "^[OB" down-line-or-history ```
- ``` bindkey -M menuselect "^[OC" forward-char ```
- ``` bindkey -M menuselect "^[OD" backward-char ```
- ``` bindkey -M menuselect "^[[1;5A" vi-backward-word ```
- ``` bindkey -M menuselect "^[[1;5B" vi-forward-word ```
- ``` bindkey -M menuselect "^[[1;5C" vi-end-of-line ```
- ``` bindkey -M menuselect "^[[1;5D" vi-beginning-of-line ```
- ``` bindkey -M menuselect "^[[1~" vi-beginning-of-line ```
- ``` bindkey -M menuselect "^[[4~" vi-end-of-line ```
- ``` bindkey -M menuselect "^[[5~" vi-backward-word ```
- ``` bindkey -M menuselect "^[[6~" vi-forward-word ```
- ``` bindkey -M menuselect "^[[A" up-line-or-history ```
- ``` bindkey -M menuselect "^[[B" down-line-or-history ```
- ``` bindkey -M menuselect "^[[C" forward-char ```
- ``` bindkey -M menuselect "^[[D" backward-char ```
- ``` bindkey -M menuselect "^[[Z" reverse-menu-complete ```
- ``` bindkey -M menuselect "." zpwrSelfInsert ```
- ``` bindkey -M menuselect "?" history-incremental-search-backward ```
- ``` bindkey -M menuselect "^?" undo ```
# Zsh Vim Visual Mode keybindings (bindkey -M visual -L)
- ``` bindkey -M visual "^[" deactivate-region ```
- ``` bindkey -M visual "^[OA" up-line ```
- ``` bindkey -M visual "^[OB" down-line ```
- ``` bindkey -M visual "^[[A" up-line ```
- ``` bindkey -M visual "^[[B" down-line ```
- ``` bindkey -M visual "-" vi-up-line-or-history ```
- ``` bindkey -M visual "U" vi-up-case ```
- ``` bindkey -M visual "a\"" select-quoted ```
- ``` bindkey -M visual "a'" select-quoted ```
- ``` bindkey -M visual "a(" select-bracketed ```
- ``` bindkey -M visual "a)" select-bracketed ```
- ``` bindkey -M visual "a+" select-quoted ```
- ``` bindkey -M visual "a," select-quoted ```
- ``` bindkey -M visual "a-" select-quoted ```
- ``` bindkey -M visual "a." select-quoted ```
- ``` bindkey -M visual "a/" select-quoted ```
- ``` bindkey -M visual "a:" select-quoted ```
- ``` bindkey -M visual "a;" select-quoted ```
- ``` bindkey -M visual "a<" select-bracketed ```
- ``` bindkey -M visual "a=" select-quoted ```
- ``` bindkey -M visual "a>" select-bracketed ```
- ``` bindkey -M visual "a@" select-quoted ```
- ``` bindkey -M visual "aB" select-bracketed ```
- ``` bindkey -M visual "aW" select-a-blank-word ```
- ``` bindkey -M visual "a[" select-bracketed ```
- ``` bindkey -M visual "a\\\\" select-quoted ```
- ``` bindkey -M visual "a]" select-bracketed ```
- ``` bindkey -M visual "a\`" select-quoted ```
- ``` bindkey -M visual "aa" select-a-shell-word ```
- ``` bindkey -M visual "ab" select-bracketed ```
- ``` bindkey -M visual "aw" select-a-word ```
- ``` bindkey -M visual "a{" select-bracketed ```
- ``` bindkey -M visual "a|" select-quoted ```
- ``` bindkey -M visual "a}" select-bracketed ```
- ``` bindkey -M visual "i\"" select-quoted ```
- ``` bindkey -M visual "i'" select-quoted ```
- ``` bindkey -M visual "i(" select-bracketed ```
- ``` bindkey -M visual "i)" select-bracketed ```
- ``` bindkey -M visual "i+" select-quoted ```
- ``` bindkey -M visual "i," select-quoted ```
- ``` bindkey -M visual "i-" select-quoted ```
- ``` bindkey -M visual "i." select-quoted ```
- ``` bindkey -M visual "i/" select-quoted ```
- ``` bindkey -M visual "i:" select-quoted ```
- ``` bindkey -M visual "i;" select-quoted ```
- ``` bindkey -M visual "i<" select-bracketed ```
- ``` bindkey -M visual "i=" select-quoted ```
- ``` bindkey -M visual "i>" select-bracketed ```
- ``` bindkey -M visual "i@" select-quoted ```
- ``` bindkey -M visual "iB" select-bracketed ```
- ``` bindkey -M visual "iW" select-in-blank-word ```
- ``` bindkey -M visual "i[" select-bracketed ```
- ``` bindkey -M visual "i\\\\" select-quoted ```
- ``` bindkey -M visual "i]" select-bracketed ```
- ``` bindkey -M visual "i\`" select-quoted ```
- ``` bindkey -M visual "ia" select-in-shell-word ```
- ``` bindkey -M visual "ib" select-bracketed ```
- ``` bindkey -M visual "iw" select-in-word ```
- ``` bindkey -M visual "i{" select-bracketed ```
- ``` bindkey -M visual "i|" select-quoted ```
- ``` bindkey -M visual "i}" select-bracketed ```
- ``` bindkey -M visual "j" down-line ```
- ``` bindkey -M visual "k" up-line ```
- ``` bindkey -M visual "o" exchange-point-and-mark ```
- ``` bindkey -M visual "p" put-replace-selection ```
- ``` bindkey -M visual "u" vi-down-case ```
- ``` bindkey -M visual "x" vi-delete ```
- ``` bindkey -M visual "~" vi-oper-swap-case ```
# Zsh Listscroll Mode keybindings (bindkey -M listscroll -L)
- ``` bindkey -M listscroll "^I" complete-word ```
- ``` bindkey -M listscroll "^J" accept-line ```
- ``` bindkey -M listscroll "^M" accept-line ```
- ``` bindkey -M listscroll "^[OB" down-line-or-history ```
- ``` bindkey -M listscroll "^[[B" down-line-or-history ```
- ``` bindkey -M listscroll " " complete-word ```
- ``` bindkey -M listscroll "f" complete-word ```
- ``` bindkey -M listscroll "q" send-break ```
# Zsh Vim Operator Mode keybindings (bindkey -M viopp -L)
- ``` bindkey -M viopp "^[" vi-cmd-mode ```
- ``` bindkey -M viopp "^[OA" up-line ```
- ``` bindkey -M viopp "^[OB" down-line ```
- ``` bindkey -M viopp "^[[A" up-line ```
- ``` bindkey -M viopp "^[[B" down-line ```
- ``` bindkey -M viopp "-" vi-up-line-or-history ```
- ``` bindkey -M viopp "a\"" select-quoted ```
- ``` bindkey -M viopp "a'" select-quoted ```
- ``` bindkey -M viopp "a(" select-bracketed ```
- ``` bindkey -M viopp "a)" select-bracketed ```
- ``` bindkey -M viopp "a+" select-quoted ```
- ``` bindkey -M viopp "a," select-quoted ```
- ``` bindkey -M viopp "a-" select-quoted ```
- ``` bindkey -M viopp "a." select-quoted ```
- ``` bindkey -M viopp "a/" select-quoted ```
- ``` bindkey -M viopp "a:" select-quoted ```
- ``` bindkey -M viopp "a;" select-quoted ```
- ``` bindkey -M viopp "a<" select-bracketed ```
- ``` bindkey -M viopp "a=" select-quoted ```
- ``` bindkey -M viopp "a>" select-bracketed ```
- ``` bindkey -M viopp "a@" select-quoted ```
- ``` bindkey -M viopp "aB" select-bracketed ```
- ``` bindkey -M viopp "aW" select-a-blank-word ```
- ``` bindkey -M viopp "a[" select-bracketed ```
- ``` bindkey -M viopp "a\\\\" select-quoted ```
- ``` bindkey -M viopp "a]" select-bracketed ```
- ``` bindkey -M viopp "a\`" select-quoted ```
- ``` bindkey -M viopp "aa" select-a-shell-word ```
- ``` bindkey -M viopp "ab" select-bracketed ```
- ``` bindkey -M viopp "aw" select-a-word ```
- ``` bindkey -M viopp "a{" select-bracketed ```
- ``` bindkey -M viopp "a|" select-quoted ```
- ``` bindkey -M viopp "a}" select-bracketed ```
- ``` bindkey -M viopp "i\"" select-quoted ```
- ``` bindkey -M viopp "i'" select-quoted ```
- ``` bindkey -M viopp "i(" select-bracketed ```
- ``` bindkey -M viopp "i)" select-bracketed ```
- ``` bindkey -M viopp "i+" select-quoted ```
- ``` bindkey -M viopp "i," select-quoted ```
- ``` bindkey -M viopp "i-" select-quoted ```
- ``` bindkey -M viopp "i." select-quoted ```
- ``` bindkey -M viopp "i/" select-quoted ```
- ``` bindkey -M viopp "i:" select-quoted ```
- ``` bindkey -M viopp "i;" select-quoted ```
- ``` bindkey -M viopp "i<" select-bracketed ```
- ``` bindkey -M viopp "i=" select-quoted ```
- ``` bindkey -M viopp "i>" select-bracketed ```
- ``` bindkey -M viopp "i@" select-quoted ```
- ``` bindkey -M viopp "iB" select-bracketed ```
- ``` bindkey -M viopp "iW" select-in-blank-word ```
- ``` bindkey -M viopp "i[" select-bracketed ```
- ``` bindkey -M viopp "i\\\\" select-quoted ```
- ``` bindkey -M viopp "i]" select-bracketed ```
- ``` bindkey -M viopp "i\`" select-quoted ```
- ``` bindkey -M viopp "ia" select-in-shell-word ```
- ``` bindkey -M viopp "ib" select-bracketed ```
- ``` bindkey -M viopp "iw" select-in-word ```
- ``` bindkey -M viopp "i{" select-bracketed ```
- ``` bindkey -M viopp "i|" select-quoted ```
- ``` bindkey -M viopp "i}" select-bracketed ```
- ``` bindkey -M viopp "j" down-line ```
- ``` bindkey -M viopp "k" up-line ```
# Vim Keybindings Insert Mode
- ``` ```
- ``` i @delimitMateS-BS ```
- ``` i @delimitMateBS ```
- ``` i delimitMateJumpMany *@58_TriggerAbb()."\=delimitMate#JumpMany()\" ```
- ``` i g @delimitMateJumpMany ```
- ``` i @delimitMateBS ```
- ``` i " @delimitMate" ```
- ``` i ' @delimitMate' ```
- ``` i ( @delimitMate( ```
- ``` i ) @delimitMate) ```
- ``` i [ @delimitMate[ ```
- ``` i ] @delimitMate] ```
- ``` i ` @delimitMate` ```
- ``` i { @delimitMate{ ```
- ``` i } @delimitMate} ```
- ``` i ISurround * =138_insert(1) ```
- ``` i Isurround * =138_insert() ```
- ``` i (sexp_insert_backspace) * sexp#backspace_insertion() ```
- ``` i (sexp_insert_double_quote) * sexp#quote_insertion('"') ```
- ``` i (sexp_insert_closing_curly) * sexp#closing_insertion('}') ```
- ``` i (sexp_insert_closing_square) * sexp#closing_insertion(']') ```
- ``` i (sexp_insert_closing_round) * sexp#closing_insertion(')') ```
- ``` i (sexp_insert_opening_curly) * sexp#opening_insertion('{') ```
- ``` i (sexp_insert_opening_square) * sexp#opening_insertion('[') ```
- ``` i (sexp_insert_opening_round) * sexp#opening_insertion('(') ```
- ``` ! * ```
- ``` ! * ```
- ``` ! * ```
- ``` ! * ```
- ``` i * dw ```
- ``` ! * ```
- ``` ! * ```
- ``` i NERDCommenterInsert * :call nerdcommenter#Comment('i', "insert") ```
- ``` i (neosnippet_start_unite_snippet) * unite#sources#neosnippet#start_complete() ```
- ``` i (neosnippet_jump) * neosnippet#mappings#jump_impl() ```
- ``` i (neosnippet_expand) * neosnippet#mappings#expand_impl() ```
- ``` i (neosnippet_jump_or_expand) * neosnippet#mappings#jump_or_expand_impl() ```
- ``` i (neosnippet_expand_or_jump) * neosnippet#mappings#expand_or_jump_impl() ```
- ``` i (fzf-maps-i) * :call fzf#vim#maps('i', 0) ```
- ``` i (fzf-complete-buffer-line) * fzf#vim#complete#buffer_line() ```
- ``` i (fzf-complete-line) * fzf#vim#complete#line() ```
- ``` i (fzf-complete-file-ag) * fzf#vim#complete#path('ag -l -g ""') ```
- ``` i (fzf-complete-file) * fzf#vim#complete#path("find . -path '*/\.*' -prune -o -type f -print -o -type l -print | sed 's:^..::'") ```
- ``` i (fzf-complete-path) * fzf#vim#complete#path("find . -path '*/\.*' -prune -o -print | sed '1d;s:^..::'") ```
- ``` i (fzf-complete-word) * fzf#vim#complete#word() ```
- ``` i (emmet-merge-lines) * =emmet#util#closePopup()=emmet#mergeLines() ```
- ``` i (emmet-anchorize-summary) * =emmet#util#closePopup()=emmet#anchorizeURL(1) ```
- ``` i (emmet-anchorize-url) * =emmet#util#closePopup()=emmet#anchorizeURL(0) ```
- ``` i (emmet-remove-tag) * =emmet#util#closePopup()=emmet#removeTag() ```
- ``` i (emmet-split-join-tag) * :call emmet#splitJoinTag() ```
- ``` i (emmet-toggle-comment) * =emmet#util#closePopup()=emmet#toggleComment() ```
- ``` i (emmet-image-encode) * =emmet#util#closePopup()=emmet#imageEncode() ```
- ``` i (emmet-image-size) * =emmet#util#closePopup()=emmet#imageSize() ```
- ``` i (emmet-move-prev-item) * :call emmet#moveNextPrevItem(1) ```
- ``` i (emmet-move-next-item) * :call emmet#moveNextPrevItem(0) ```
- ``` i (emmet-move-prev) * =emmet#util#closePopup()=emmet#moveNextPrev(1) ```
- ``` i (emmet-move-next) * =emmet#util#closePopup()=emmet#moveNextPrev(0) ```
- ``` i (emmet-balance-tag-outword) * :call emmet#balanceTag(-1) ```
- ``` i (emmet-balance-tag-inward) * :call emmet#balanceTag(1) ```
- ``` i (emmet-update-tag) * =emmet#util#closePopup()=emmet#updateTag() ```
- ``` i (emmet-expand-word) * =emmet#util#closePopup()=emmet#expandAbbr(1,"") ```
- ``` i (emmet-expand-abbr) * =emmet#util#closePopup()=emmet#expandAbbr(0,"") ```
- ``` i delimitMateS-Tab * 58_TriggerAbb()."\=delimitMate#JumpAny()\" ```
- ``` i delimitMateSpace * 58_TriggerAbb()."\=delimitMate#ExpandSpace()\" ```
- ``` i delimitMateCR * 58_TriggerAbb()."\=delimitMate#ExpandReturn()\" ```
- ``` i delimitMateS-BS * delimitMate#WithinEmptyPair() ? "\" : "\" ```
- ``` i delimitMateBS * =delimitMate#BS() ```
- ``` i delimitMate` * 58_TriggerAbb()."=delimitMate#QuoteDelim(\"\\\`\")" ```
- ``` i delimitMate' * 58_TriggerAbb()."=delimitMate#QuoteDelim(\"\\\'\")" ```
- ``` i delimitMate" * 58_TriggerAbb()."=delimitMate#QuoteDelim(\"\\\"\")" ```
- ``` i delimitMate] * 58_TriggerAbb().delimitMate#JumpOut("\]") ```
- ``` i delimitMate} * 58_TriggerAbb().delimitMate#JumpOut("\}") ```
- ``` i delimitMate) * 58_TriggerAbb().delimitMate#JumpOut("\)") ```
- ``` i delimitMate[ * 58_TriggerAbb().delimitMate#ParenDelim("]") ```
- ``` i delimitMate{ * 58_TriggerAbb().delimitMate#ParenDelim("}") ```
- ``` i delimitMate( * 58_TriggerAbb().delimitMate#ParenDelim(")") ```
- ``` i (ale_complete) * :ALEComplete ```
- ``` i (ale_show_completion_menu) * ```
- ``` i (asyncomplete_force_refresh) * asyncomplete#force_refresh() ```
- ``` i SuperTabBackward ```
- ``` i SuperTabBackward & =SuperTab('p') ```
- ``` i SuperTabForward & =SuperTab('n') ```
- ``` i * =UltiSnips#ListSnippets() ```
- ``` i * ```
- ``` i * ```
- ``` i * :TTags ```
- ``` i * :SyntasticToggleMode ```
- ``` i * :LOTRToggle ```
- ``` i * :MinimapToggle ```
- ``` i * :TlistAddFiles *:TlistToggle ```
- ``` i * :UndotreeToggle ```
- ``` i * :NERDTreeToggle ```
- ``` i * :%s@@@g ```
- ``` i * :call GoToNextMarker("{{{",1)i ```
- ``` i