aboutsummaryrefslogtreecommitdiff
path: root/bindings.bb
diff options
context:
space:
mode:
Diffstat (limited to 'bindings.bb')
-rw-r--r--bindings.bb215
1 files changed, 0 insertions, 215 deletions
diff --git a/bindings.bb b/bindings.bb
deleted file mode 100644
index 3688228..0000000
--- a/bindings.bb
+++ /dev/null
@@ -1,215 +0,0 @@
-# This file defines the key bindings for bb
-# The format is: <key>(,<key>)*:[ ]*#<description>(\n[ ]+script)+
-Section: BB Commands
-?,F1: # Show Help menu
- bbcmd help
-q,Q: # Quit
- bbcmd quit
-Ctrl-c: # Send interrupt signal
- kill -INT $PPID
-Ctrl-z: # Suspend
- kill -TSTP $PPID
-Ctrl-\: # Quit and generate core dump
- kill -QUIT $PPID
-
-Section: File Navigation
-j,Down: # Next file
- bbcmd move:+1
-k,Up: # Previous file
- bbcmd move:-1
-h,Left: # Parent directory
- bbcmd cd:..
-l,Right: # Enter directory
- if [ -d "$BBCURSOR" ]; then bbcmd cd:"$BBCURSOR"; fi
-Ctrl-f: # Search for file
- file="$(
- find $BBGLOB -mindepth 1 -printf '%P\0' | bbpick "Find: "
- )" && bbcmd goto:"$file"
-/: # Pick a file
- file="$(printf "%s\0" $BBGLOB | bbpick "Pick: ")" || exit
- bbcmd goto:"$file"
-*: # Set the glob
- glob="$(bbask "Show files matching: ")" && bbcmd glob:"$glob"
-Ctrl-g: # Go to directory
- cd="$(bbask "Go to directory: ")" && bbcmd cd:"$cd"
-m: # Mark this directory
- mkdir -p "$XDG_CONFIG_HOME/bb/marks"
- ln -sT "$2" "$XDG_CONFIG_HOME/bb/marks/$1" 2>/dev/null
- mark="$(bbask "Mark: ") && ln -s "$PWD" "$XDG_CONFIG_HOME"/bb/marks/"$mark"
-': # Go to a marked directory
- [ -d "$XDG_CONFIG_HOME"/bb/marks ] || exit
- mark="$(find "$XDG_CONFIG_HOME"/bb/marks/ -mindepth 1 -type l -printf '%P\0' | bbpick "Jump to: ")" &&
- bbcmd cd:"$(readlink -f "$XDG_CONFIG_HOME"/bb/marks/"$mark")"
--,Backspace: # Go to previous directory
- [ "$BBPREVPATH" ] && bbcmd cd:"$BBPREVPATH"
-;: # Show selected files
- bbcmd cd:'<selection>'
-0: # Go to intitial directory
- bbcmd cd:"$BBINITIALPATH"
-g,Home: # Go to first file
- bbcmd move:0
-G,End: # Go to last file
- bbcmd move:100%n
-PgDn: # Page down
- bbcmd scroll:+100%
-PgUp: # Page up
- bbcmd scroll:-100%
-Ctrl-d: # Half page down
- bbcmd scroll:+50%
-Ctrl-u: # Half page up
- bbcmd scroll:-50%
-Mouse wheel down: # Scroll down
- bbcmd scroll:+3
-Mouse wheel up: # Scroll up
- bbcmd scroll:-3
-
-Section: File Selection
-v,V,Space: # Toggle selection at cursor
- bbcmd toggle:"$BBCURSOR"
-Escape: # Clear selection
- bbcmd deselect
-S: # Select pattern
- patt="$(bbask "Select: ")" && bbcmd select: $patt
-U: # Unselect pattern
- patt="$(bbask "Unselect: ")" && bbcmd deselect: $patt
-Ctrl-s: # Save the selection
- [ $# -gt 0 ] && savename="$(bbask "Save selection as: ")" || exit 1
- mkdir -p "$XDG_DATA_HOME"/bb
- if ! expr "$savename" : ".*\.sel" >/dev/null; then savename="$savename.sel"; fi
- printf '%s\0' "$@" > "$XDG_DATA_HOME"/bb/"$savename"
-Ctrl-o: # Open a saved selection
- [ -d "$XDG_DATA_HOME"/bb ] || exit
- [ $# -gt 0 ] && ! bbconfirm "The current selection will be discarded. " && exit 1
- loadpath="$(find "$XDG_DATA_HOME"/bb/ -mindepth 1 -name '*.sel' -printf '%P\0' | bbpick "Load selection: ")" &&
- cat "$XDG_DATA_HOME"/bb/"$loadpath" | bbcmd deselect select:
-J: # Spread selection down
- bbcmd spread:+1
-K: # Spread selection up
- bbcmd spread:-1
-Shift-Home: # Spread the selection to the top
- bbcmd spread:0
-Shift-End: # Spread the selection to the bottom
- bbcmd spread:100%n
-Ctrl-a: # Select all files here
- bbcmd select
-
-Section: File Actions
-Left click: # Move cursor to file
- if [ "$BBCLICKED" = "<column label>" ]; then
- bbcmd sort:"~$BBMOUSECOL"
- elif [ "$BBCLICKED" -a "$BBMOUSECOL" = "*" ]; then
- bbcmd toggle:"$BBCLICKED"
- elif [ "$BBCLICKED" ]; then
- bbcmd goto:"$BBCLICKED"
- fi
-Enter,Double left click: # Open file/directory
- if [ -d "$BBCURSOR" ]; then bbcmd cd:"$BBCURSOR"
- elif [ "$(uname)" = "Darwin" ]; then
- if expr "$(file -bI "$BBCURSOR")" : '\(text/\|inode/empty\)' >/dev/null; then $EDITOR "$BBCURSOR"
- else open "$BBCURSOR"; fi
- else
- if expr "$(file -bi "$BBCURSOR")" : '\(text/\|inode/x-empty\)' >/dev/null; then $EDITOR "$BBCURSOR"
- else xdg-open "$BBCURSOR"; fi
- fi
-e: # Edit file in $EDITOR
- $EDITOR "$BBCURSOR" || bbpause
-d,Delete: # Delete
- case "$(bbtargets "$BBCURSOR" "$@")" in
- cursor) set -- "$BBCURSOR" ;;
- both) set -- "$BBCURSOR" "$@" ;;
- esac
- printf "\033[1mDeleting the following:\n\033[33m$(printf ' %s\n' "$@")\033[0m" | bbunscroll | more &&
- bbconfirm && rm -rf "$@" && bbcmd deselect refresh
-Ctrl-v: # Move files here
- printf "\033[1mMoving the following to here:\n\033[33m$(printf ' %s\n' "$@")\033[0m" | bbunscroll | more &&
- bbconfirm && printf "\033[1G\033[KMoving..." && mv -i "$@" . && printf "done." &&
- bbcmd deselect refresh && for f; do bbcmd sel:"$(basename "$f")"; done
-c: # Copy a file
- case "$(bbtargets "$BBCURSOR" "$@")" in
- cursor) set -- "$BBCURSOR";;
- both) set -- "$BBCURSOR" "$@";;
- esac
- [ $# -gt 0 ] || exit
- printf "\033[1mCopying the following to here:\n\033[33m$(printf ' %s\n' "$@")\033[0m" | bbunscroll | more
- bbconfirm && printf "\033[1G\033[KCopying..." &&
- for f; do if [ "./$(basename "$f")" -ef "$f" ]; then
- cp -ri "$f" "$f.copy" || break
- else cp -ri "$f" . || break; fi; done; printf 'done.' && bbcmd refresh
-Ctrl-n: # New file/directory
- case "$(printf '%s\0' File Directory | bbpick "Create new: ")" in
- File)
- name="$(bbask "New File: ")" && touch -- "$name"
- ;;
- Directory)
- name="$(bbask "New Directory: ")" && mkdir -- "$name"
- ;;
- *) exit
- ;;
- esac && bbcmd goto:"$name" refresh || bbpause
-p: # Page through a file with `less`
- less -XK "$BBCURSOR"
-r,F2: # Rename files
- case "$(bbtargets "$BBCURSOR" "$@")" in
- cursor) set -- "$BBCURSOR";;
- both) set -- "$BBCURSOR" "$@";;
- esac
- for f; do
- newname="$(bbask "Rename $(printf "\033[33m%s\033[39m" "$(basename "$f")"): " "$(basename "$f")")" || break
- r="$(dirname "$f")/$newname"
- [ "$r" = "$f" ] && continue
- [ -e "$r" ] && printf "\033[31;1m$r already exists! It will be overwritten.\033[0m "
- && bbconfirm && { rm -rf "$r" || { bbpause; exit; }; }
- mv "$f" "$r" || { bbpause; exit; }
- bbcmd deselect:"$f" select:"$r"
- [ "$f" = "$BBCURSOR" ] && bbcmd goto:"$r"
- done
- bbcmd refresh
-~: # Regex rename files
- if ! command -v rename >/dev/null; then
- printf '\033[31;1mThe `rename` command is not installed. Please install it to use this key binding.\033[0m\n'
- bbpause; exit 1
- fi
- if [ $# -eq 0 ]; then set -- $BBGLOB; fi
- set -e
- patt="$(bbask "Replace pattern: ")"
- rep="$(bbask "Replacement: ")"
- printf "\033[1mRenaming:\n\033[33m$(if [ $# -gt 0 ]; then rename -nv "$patt" "$rep" "$@"; else rename -nv "$patt" "$rep" *; fi)\033[0m" | bbunscroll | more
- bbconfirm
- if [ $# -eq 0 ]; then set -- *; [ -e "$1" ] || exit 1; fi
- rename -i "$patt" "$rep" "$@"
- bbcmd deselect refresh
-
-Section: Shell Commands
-:: # Run a command
- cmd="$(bbask ':')" && sh -c "$cmd" -- "$@"; bbcmd refresh; bbpause
-|: # Pipe selected files to a command
- cmd="$(bbask '|')" && printf '%s\n' "$@" | sh -c "$cmd"; bbcmd refresh; bbpause
-@: # Pipe selected files to a command
- cmd="$(bbask '@')" && sh -c "$cmd \"$$@\"" -- "$@"; bbcmd refresh; bbpause
->: # Open a shell
- tput rmcup; tput cvvis; $SHELL; bbcmd refresh
-f: # Resume suspended process
- bbcmd fg
-
-Section: Viewing Options
-s: # Sort by...
- sort="$(bbask -1 "Sort (n)ame (s)ize (m)odification (c)reation (a)ccess (r)andom (p)ermissions: ")" &&
- bbcmd sort:"~$sort"
----,#: # Set columns
- columns="$(bbask "Set columns (*)selected (a)ccessed (c)reated (m)odified (n)ame (p)ermissions (r)andom (s)ize: ")" &&
- bbcmd col:"$columns"
-.: # Toggle dotfile visibility
- if [ "$BBGLOB" = ".* *" ]; then
- bbcmd glob:"*"
- else
- bbcmd glob:".* *"
- fi
-i: # Toggle interleaving files and directories
- bbcmd interleave
-F5,Ctrl-l: # Refresh view
- bbcmd refresh
-Ctrl-b: # Bind a key to a script
- key="$(bbask -1 "Press key to bind...")" && echo && script="$(bbask "Bind script: ")" &&
- bbcmd bind:"$key":"{ $script; } || bbpause" || bbpause
-
-Section: User Bindings