# Usage: Put "source bash_completion_tmux.sh" into your .bashrc
# Based upon the example at http://paste-it.appspot.com/Pj4mLycDE
+ _tmux_cmds=" \
+attach-session \
+bind-key \
+break-pane \
+capture-pane \
+choose-client \
+choose-session \
+choose-window \
+clear-history \
+clock-mode \
+command-prompt \
+confirm-before \
+copy-buffer \
+copy-mode \
+delete-buffer \
+detach-client \
+display-message \
+display-panes \
+down-pane \
+find-window \
+has-session \
+if-shell \
+join-pane \
+kill-pane \
+kill-server \
+kill-session \
+kill-window \
+last-window \
+link-window \
+list-buffers \
+list-clients \
+list-commands \
+list-keys \
+list-panes \
+list-sessions \
+list-windows \
+load-buffer \
+lock-client \
+lock-server \
+lock-session \
+move-window \
+new-session \
+new-window \
+next-layout \
+next-window \
+paste-buffer \
+pipe-pane \
+previous-layout \
+previous-window \
+refresh-client \
+rename-session \
+rename-window \
+resize-pane \
+respawn-window \
+rotate-window \
+run-shell \
+save-buffer \
+select-layout \
+select-pane \
+select-prompt \
+select-window \
+send-keys \
+send-prefix \
+server-info \
+set-buffer \
+set-environment \
+set-option \
+set-window-option \
+show-buffer \
+show-environment \
+show-messages \
+show-options \
+show-window-options \
+source-file \
+split-window \
+start-server \
+suspend-client \
+swap-pane \
+swap-window \
+switch-client \
+unbind-key \
+unlink-window \
+up-pane"
+
_tmux_expand ()
{
[ "$cur" != "${cur%\\}" ] && cur="$cur"'\';
function _tmux_complete_client() {
local IFS=$'\n'
local cur="${1}"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients | cut -f 1 -d ':')" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") )
}
function _tmux_complete_session() {
local IFS=$'\n'
local cur="${1}"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions | cut -f 1 -d ':')" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") )
}
function _tmux_complete_window() {
local IFS=$'\n'
local session_name="$(echo "${cur}" | sed 's/\\//g' | cut -d ':' -f 1)"
local sessions
- sessions="$(tmux -q list-sessions | sed -re 's/([^:]+:).*$/\1/')"
+ sessions="$(tmux -q list-sessions 2>/dev/null | sed -re 's/([^:]+:).*$/\1/')"
if [[ -n "${session_name}" ]]; then
sessions="${sessions}
-$(tmux -q list-windows -t "${session_name}" | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')"
+$(tmux -q list-windows -t "${session_name}" 2>/dev/null | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')"
fi
cur="$(echo "${cur}" | sed -e 's/:/\\\\:/')"
sessions="$(echo "${sessions}" | sed -e 's/:/\\\\:/')"
if [[ $COMP_CWORD -le $cmd_index ]]; then
# The user has not specified a command yet
- local all_commands="$(tmux -q list-commands | cut -f 1 -d ' ')"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${all_commands}" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${_tmux_cmds}" -- "${cur}") )
else
case ${cmd} in
attach-session|attach)