sshrc configuration with vim and tmux integration
The snippet can be accessed without any authentication.
Authored by
Ingo Meyer
A sample sshrc
configuration with integration for a custom .vimrc
and .tmux.conf
.
sshrc 4.24 KiB
mkcd () {
mkdir "$@"
[[ "$1" == "-p" ]] && shift
cd "$1"
}
surc () {
[ "$1" = "-" ] && shift
local USER="$1"
local DISTRIB_ID=""
if [ -r "/etc/lsb-release" ]; then
DISTRIB_ID="$(awk -F'=' '$1 == "DISTRIB_ID" { print $2 }' /etc/lsb-release 2>/dev/null)"
fi
[ -z "${USER}" ] && USER="root"
chmod +x "${SSHHOME}" 2>/dev/null
if [ "${DISTRIB_ID}" = "Ubuntu" ]; then
sudo -u "${USER}" SSHHOME="${SSHHOME}" "${SSHHOME}/bashsshrc"
else
(
export SSHHOME
su -s "${SSHHOME}/bashsshrc" "${USER}"
)
fi
}
tmuxrc () {
local TMUXDIR=/tmp/heimbach_tmuxserver
if ! [ -d "${TMUXDIR}" ]; then
rm -rf "${TMUXDIR}"
mkdir -m 700 -p "${TMUXDIR}"
fi
rm -rf "${TMUXDIR}/.sshrc.d"
cp -r "${SSHHOME}/.sshrc" "${SSHHOME}/bashsshrc" "${SSHHOME}/sshrc" "${SSHHOME}/.sshrc.d" "${TMUXDIR}"
SSHHOME="${TMUXDIR}" SHELL="${TMUXDIR}/bashsshrc" /usr/bin/tmux -f "${TMUXDIR}/.sshrc.d/.tmux.conf" \
-S "${TMUXDIR}/tmuxserver" "$@"
}
source "${SSHHOME}/.sshrc.d/.git-prompt.sh"
export SHELL="$(which bash)"
export PS1='\[\033[97;1m\]\u@\h:\[\033[0m\]\[\033[94;1m\]\w\[\033[0m\]\[\033[1;36m\]$(__git_ps1 "(%s)")\[\033[0m\]\[\033[97m\]\$\[\033[0m\] '
if [[ ! -f "/etc/redhat-release" ]] || [[ "$(sed 's/[^0-9.]*//g' /etc/redhat-release | awk -F'.' '{ print $1 }')" -ge 7 ]]; then
# only apply complex `LS_COLORS` if running CentOS >= 7 or any other Linux distribution
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'
else
export LS_COLORS='di=1;34:ln=1;36:so=1;35:pi=33;40:ex=1;32:bd=33;40:cd=33;40:su=37;41:sg=30;43:tw=30;42:ow=34;42'
fi
export LSCOLORS='ExGxFxdaCxdadahbadacec' # LS_COLORS for macOS / BSD
[[ -z "${TMUX}" ]] && export TERM="xterm-256color"
export VISUAL="vim"
export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
if [[ "${BASH_VERSINFO[0]}" -gt "4" ]] || [[ "${BASH_VERSINFO[0]}" -eq "4" && "${BASH_VERSINFO[1]}" -ge "4" ]]; then
export INPUTRC="${SSHHOME}/.sshrc.d/.inputrc"
else
export INPUTRC="${SSHHOME}/.sshrc.d/.inputrc_simple"
fi
alias ls='ls --color=auto'
alias ll='ls -ahl'
alias grep='grep --color=auto'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias ln='ln -i'
set -o vi
# put cursor at the end of the line when moving in history in vi command mode
bind -m vi-command '"\201": previous-history'
bind -m vi-command '"\202": next-history'
bind -m vi-command '"\203": end-of-line'
bind -m vi-command '"k": "\201\203"'
bind -m vi-command '"j": "\202\203"'
bind -m vi-command '"\e[A": "\201\203"'
bind -m vi-command '"\e[B": "\202\203"'
bind -m vi-command '"K": history-search-backward'
bind -m vi-command '"J": history-search-forward'
# use vi style tab and shift-tab completion
bind 'set show-all-if-ambiguous on'
bind 'TAB: menu-complete'
bind '"\e[Z": menu-complete-backward'
# vim: ts=4 sts=4 sw=4 et ft=sh tw=120
Please register or sign in to comment