-
Notifications
You must be signed in to change notification settings - Fork 0
/
.bashrc
125 lines (98 loc) · 3.01 KB
/
.bashrc
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
# If not running interactively, don't do anything.
case $- in
*i*) ;;
*) return;;
esac
# Disable flow control (ctrl-s and ctrl-q).
stty -ixon
# Prompt customization.
BLACK="\[$(tput setaf 0)\]"
RED="\[$(tput setaf 1)\]"
GREEN="\[$(tput setaf 2)\]"
YELLOW="\[$(tput setaf 3)\]"
BLUE="\[$(tput setaf 4)\]"
MAGENTA="\[$(tput setaf 5)\]"
CYAN="\[$(tput setaf 6)\]"
WHITE="\[$(tput setaf 7)\]"
RESET="\[$(tput sgr0)\]"
PS1="${RED}[${YELLOW}\u${GREEN}@${BLUE}\h ${MAGENTA}\w${RED}]${RESET}$ "
# Environment variables.
export GPG_TTY="$(tty)"
export EDITOR='nvim'
# Path.
export PATH="$PATH:$(go env GOPATH)/bin"
export PATH="$PATH:$HOME/.local/opt/odin"
# Enable vi keybindings for command line editing.
set -o vi
# Don't put duplicate lines or lines starting with space in the history.
HISTCONTROL=ignoreboth
# Append to the history file, don't overwrite it.
shopt -s histappend
HISTFILE="$HOME/.bash_history"
HISTFILESIZE=20000
HISTSIZE=20000
# Before executing a command from history expansion, display it for verification.
shopt -s histverify
# Check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
shopt -s globstar
# Allows you to cd into directory merely by typing the directory name.
shopt -s autocd
# Enable color support of ls and grep.
if [ -x /usr/bin/dircolors ]; then
eval "$(dircolors -b)"
alias ls='ls --color=auto --group-directories-first'
alias grep='grep --color=auto'
fi
# Colored GCC warnings and errors.
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# Functions.
reload_configs() {
source "$HOME/.bashrc"
bind -f "$HOME/.inputrc"
echo "Reloaded \".bashrc\" and \".inputrc\"."
}
cmd_exists() {
type "$1" &> /dev/null
}
fzf_history() {
if cmd_exists 'fzf'; then
local command_to_run="$(history | tac | sort -k 1.8 -u | sort -n | fzf --tac --no-sort --bind 'ctrl-l:toggle-sort' | sed -E 's/ *[0-9]+ *//')"
if [ -n "$command_to_run" ]; then
READLINE_LINE="$command_to_run"
READLINE_POINT="${#command_to_run}"
else
echo 'No command selected.'
fi
else
echo 'fzf not found.'
fi
}
# Bindings.
bind -x '"\C-r":"fzf_history"'
# Handy aliases.
alias config="$EDITOR $HOME/.bashrc"
alias reload='reload_configs'
alias get_idf=". $HOME/.local/opt/esp-idf/export.sh"
alias la='ls -A'
alias ll='ls -lh'
alias lx='ls -lhA'
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -v'
alias mkd='mkdir -pv'
alias ffmpeg='ffmpeg -hide_banner'
# Load environment.
cmd_exists zoxide && eval "$(zoxide init bash)"
cmd_exists opam && eval "$(opam env --switch=default)"
# Load desktop specific configuration.
if [ "$(hostname)" = "arc" ]; then
source ~/.bashrc_desktop
fi
# Load Chromebook specific configuration.
if [ "$(hostname)" = "penguin" ]; then
source ~/.bashrc_chromebook
fi