-
Notifications
You must be signed in to change notification settings - Fork 0
/
.bash_profile
153 lines (125 loc) · 4.35 KB
/
.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# =================================================
# Import in non-interactive commands
# =================================================
source ~/.bashrc
# =================================================
# Colors
# =================================================
# First set up our terminal as xterm
if [[ -n $TMUX ]]; then
export TERM='screen-256color'
elif [[ -n `find /usr/share/terminfo -name 'xterm-256color'` ]]; then
export TERM='xterm-256color'
elif [[ -n `find /lib/terminfo -name 'xterm-256color'` ]]; then
export TERM='xterm-256color'
else
export TERM='xterm-color'
fi
# =================================================
# Default bash stuff
# =================================================
export EDITOR=vim
if [[ "$OSTYPE" =~ 'darwin' ]]; then
export BROWSER=/usr/bin/open
fi
# Sane history
# http://blog.sanctum.geek.nz/better-bash-history/
# https://github.com/mrzool/bash-sensible/
shopt -s histappend # Append to .bash_history - don't rewrite
shopt -s cmdhist # Save multi-line commands as one command
unset HISTFILESIZE # Record fugging everything
HISTSIZE=1000000
HISTCONTROL='erasedups:ignoreboth' # Ignore dupe commands, and commands starting with a space
HISTIGNORE='ls:bg:fg:history:jobs' # Ignore the output of common commands
PROMPT_COMMAND='history -a; history -c; history -r' # Append history, clear it, and re-read
export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
export CLICOLOR=1
# Less > More
export PAGER="less"
export LESS="-niSRFX"
# -n supppres line numbers
# i search ignores case
# S scroll horizontally
# R interpret color escape sequences
# F quit if one screen
# X no init
# Commandline customisation
function current {
branch=`git branch 2> /dev/null | awk '/\* / {print $2}'`
if [[ -n $branch ]]; then echo " ($branch)"; fi
}
function jobcount {
jobs | wc -l | tr -d 0 | xargs
}
export PS1='\[\033[00;32m\]\h [$(jobcount)]\[\033[01;34m\] \w\[\033[00;35m\]$(current)\n\[\033[01;34m\]\$\[\033[00m\] '
# Homebrew autocompletion
if type brew &>/dev/null; then
HOMEBREW_PREFIX="$(brew --prefix)"
if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]; then
source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
else
for COMPLETION in "${HOMEBREW_PREFIX}/etc/bash_completion.d/"*; do
[[ -r "$COMPLETION" ]] && source "$COMPLETION"
done
fi
fi
# Autocomplete for SSH hostnames
complete -W "$(echo $(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | sort -u | grep -v "\["))" ssh
# =================================================
# Aliases
# =================================================
# Default options
alias ls='ls -G' # always use colors
alias la='ls -alsG' # List all, with colors
alias ll='la'
alias vim='vim -p' # Vim should open multiple files in tabs
alias vi='vim -p'
alias pine='alpine'
alias g='git'
alias ash='aws-ssh'
if [[ "$OSTYPE" =~ 'darwin' ]]; then
alias tree='tree -C' # Tree with colors
fi
# =================================================
# TMUX Nonsense
# =================================================
# Show running tmux sessions
if [[ -n "`which tmux`" && -n `tmux ls 2> /dev/null` ]]
then
echo ":: Running tmux sessions ::"
tmux ls 2> /dev/null
fi
# Set the name of the current tmux window to the current
# directory if in a git repo, otherwise restore the automatic-rename option
function muxwin {
repo=$(git rev-parse --show-toplevel 2> /dev/null)
if [[ -n "$TMUX" && -n "$repo" ]]; then
tmux rename-window $(basename $(git rev-parse --show-toplevel))
elif [[ -n "$TMUX" ]]; then
tmux set-window-option -q automatic-rename on
fi
}
function settheme {
if [[ "$(uname -s)" == "Darwin" ]]; then
sith() {
val=$(defaults read -g AppleInterfaceStyle 2>/dev/null)
if [[ $val == "Dark" ]]; then
export BAT_THEME="OneHalfDark"
i
else
export BAT_THEME="OneHalfLight"
fi
}
i() {
if [[ $ITERM_PROFILE == "Terminal" ]]; then
echo -ne "\033]50;SetProfile=Dark\a"
export ITERM_PROFILE="Dark"
else
echo -ne "\033]50;SetProfile=Terminal\a"
export ITERM_PROFILE="Terminal"
fi
}
sith
fi
}
export PROMPT_COMMAND="$PROMPT_COMMAND && muxwin && settheme"