aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/.zshrc
blob: 628edfd7438039d979d26982cd7e0b2a425a4deb (plain)
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
# Colors and prompt
autoload -U colors && colors
if [[ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then
  . /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
fi

autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst

PROMPT=$'\n''%{%}%B%~ ${reset_color}%F{yellow}${vcs_info_msg_0_}%f'$'\n''%F{green}→%f '
RPROMPT='%{%} %n%f@%F{red}%m%f'
zstyle ':vcs_info:git:*' formats ' %b'

# Basic auto/tab complete:
autoload -U compinit
zstyle ':completion:*' menu select
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' completer _expand _complete _ignored _approximate
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
zmodload zsh/complist
compinit
_comp_options+=(globdots)		# Include hidden files.

zstyle :compinstall filename '/home/yaroslav/.zshrc'

# History
HISTFILE=~/.cache/zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory autocd beep notify

# vi mode
bindkey -v

# Use vim keys in tab complete menu:
bindkey -M menuselect 'H' vi-backward-char
bindkey -M menuselect 'K' vi-up-line-or-history
bindkey -M menuselect 'L' vi-forward-char
bindkey -M menuselect 'J' vi-down-line-or-history
bindkey -v '^?' backward-delete-char

# Change cursor shape for different vi modes.
function zle-keymap-select {
  if [[ ${KEYMAP} == vicmd ]] ||
     [[ $1 = 'underscore' ]]; then
    echo -ne '\e[3 q'
  elif [[ ${KEYMAP} == main ]] ||
       [[ ${KEYMAP} == viins ]] ||
       [[ ${KEYMAP} = '' ]] ||
       [[ $1 = 'beam' ]]; then
    echo -ne '\e[5 q'
  fi
}

echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.

zle -N zle-keymap-select

# Environment variables
typeset -U PATH path
path=("$HOME/.scripts" "$path[@]")
export PATH
export EDITOR="nvim"
export TERMINAL="termite"
export TERM="xterm-256color"
export BROWSER="qutebrowser"

# Generic shortcuts
alias music="ncmpcpp"
alias clock="ncmpcpp -s clock"
alias news="newsboat"
alias email="neomutt"
alias files="vifm_launch"
alias audio="ncpamixer"
alias calendar="calcurse"
alias calc="R --no-save"

# Mounting drive shortcuts
alias mnt="udisksctl mount -b"
alias umnt="udisksctl unmount -b"
alias dlock="udisksctl lock -b"
alias dulock="udisksctl unlock -b"

# Some aliases
alias v="nvim"
alias vf="vifm_launch"
alias nf="clear && neofetch" # Le Redditfetch
alias eslint="./node_modules/.bin/eslint"
alias ls='ls -hN --color=auto --group-directories-first'
weath() { curl wttr.in/$1 ;} # Check the weather (give city or leave blank).

# Internet
alias yt="youtube-dl --add-metadata -ic" # Download video link
alias yta="youtube-dl --add-metadata -xic" # Download only audio
alias YT="youtube-viewer"
alias starwars="telnet towel.blinkenlights.nl"

# Audio and Music
alias mute="lmc mute"
alias vu="lmc up"
alias vd="lmc down"
alias play="mpc toggle"
alias next="mpc next"
alias prev="mpc prev"
alias pause="mpc pause"
alias beg="mpc seek 0%"
alias lilbak="mpc seek -10"
alias lilfor="mpc seek +10"
alias bigbak="mpc seek -120"
alias bigfor="mpc seek +120"