Skip to content

Instantly share code, notes, and snippets.

@EhsanKia
Last active May 26, 2020 04:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EhsanKia/ce98bc5ce3cd4e94d3cf12b4ec9495b8 to your computer and use it in GitHub Desktop.
Save EhsanKia/ce98bc5ce3cd4e94d3cf12b4ec9495b8 to your computer and use it in GitHub Desktop.
UNIX configs
# Bind r to reload config
bind r source-file ~/.tmux.conf
# Remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# split panes using | and -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# switch panes using Alt-arrow without prefix
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse on
# Scroll History
set -g history-limit 30000
# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on
# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50
# don't rename windows automatically
set-option -g allow-rename off
######################
### DESIGN CHANGES ###
######################
# panes
set -g pane-border-fg black
set -g pane-active-border-fg brightred
## Status bar design
# status line
set -g status-justify left
set -g status-bg default
set -g status-fg colour12
set -g status-interval 2
# messaging
set -g message-fg black
set -g message-bg yellow
set -g message-command-fg blue
set -g message-command-bg black
#window mode
setw -g mode-bg colour6
setw -g mode-fg colour0
# window status
setw -g window-status-format " #F#I:#W#F "
setw -g window-status-current-format " #F#I:#W#F "
setw -g window-status-format "#[fg=magenta]#[bg=black] #I #[bg=cyan]#[fg=colour8] #W "
setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W "
setw -g window-status-current-bg colour0
setw -g window-status-current-fg colour11
setw -g window-status-current-attr dim
setw -g window-status-bg green
setw -g window-status-fg black
setw -g window-status-attr reverse
# Info on left (I don't have a session display for now)
set -g status-left ''
# loud or quiet?
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-window-option -g monitor-activity off
set-option -g bell-action none
set -g default-terminal "screen-256color"
# The modes
setw -g clock-mode-colour colour135
setw -g mode-attr bold
setw -g mode-fg colour196
setw -g mode-bg colour238
# The panes
set -g pane-border-bg colour235
set -g pane-border-fg colour238
set -g pane-active-border-bg colour236
set -g pane-active-border-fg colour51
# The statusbar
set -g status-position bottom
set -g status-bg colour234
set -g status-fg colour137
set -g status-attr dim
set -g status-left ''
set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S '
set -g status-right-length 50
set -g status-left-length 20
setw -g window-status-current-fg colour81
setw -g window-status-current-bg colour238
setw -g window-status-current-attr bold
setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F '
setw -g window-status-fg colour138
setw -g window-status-bg colour235
setw -g window-status-attr none
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '
setw -g window-status-bell-attr bold
setw -g window-status-bell-fg colour255
setw -g window-status-bell-bg colour1
# The messages
set -g message-attr bold
set -g message-fg colour232
set -g message-bg colour166
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
# Plugin settings
set -g @resurrect-save-shell-history 'on'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
ZSH_THEME=""
ENABLE_CORRECTION="true" # command auto-correction.
HIST_STAMPS="yyyy-mm-dd" # Execution timestamp format
# Setup plugins
plugins=(zsh-autosuggestions zsh-completions dircycle history python sudo wd)
autoload -U compinit && compinit
source $ZSH/oh-my-zsh.sh
# Pure theme
fpath+=$HOME/.oh-my-zsh/themes/pure
autoload -U promptinit; promptinit
prompt pure
# Set default editors
export EDITOR='micro'
# Setup history
setopt share_history
HISTSIZE=100000
SAVEHIST=100000
HISTFILE=~/.history
setopt APPEND_HISTORY
############# ALIASES ###############
alias t="tmux new-session -A -s main"
alias zshrc="$EDITOR ~/.zshrc"
########## HACKS / FIXES ############
# Fix micro bindings in tmux
export TERM=xterm-256color
# Better word navigation(?)
export WORDCHARS="${WORDCHARS:s#/#}"
# This speeds up pasting w/ autosuggest
# https://github.com/zsh-users/zsh-autosuggestions/issues/238
pasteinit() {
OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]}
zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
}
pastefinish() {
zle -N self-insert $OLD_SELF_INSERT
}
zstyle :bracketed-paste-magic paste-init pasteinit
zstyle :bracketed-paste-magic paste-finish pastefinish
# https://github.com/sindresorhus/pure/issues/184
function zle-line-init zle-keymap-select {
zle .reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
# make tmux-yank work?
bindkey -e
########## CUSTOM BINDINGS ###########
# ctrl+backspace and ctrl+del to delete word
bindkey '^H' backward-kill-word
bindkey '^[[3;5~' kill-word
# bind zsh-autocomplete to ctrl+space
bindkey '^ ' autosuggest-accept
# Up/down history search after typing a prefix
autoload -U up-line-or-beginning-search
zle -N up-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[B" down-line-or-beginning-search
# Keep at the end of .zshrc to wrap all created widgets
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
{
"Esc": "RemoveAllMultiCursors",
"CtrlShiftD": "DuplicateLine",
"Alt-d": "SpawnMultiCursor",
"CtrlShiftUp": "MoveLinesUp",
"CtrlShiftDown": "MoveLinesDown",
}
{
"autoclose": true,
"autoindent": true,
"autosave": 0,
"autosu": true,
"backup": true,
"basename": false,
"colorcolumn": 0,
"colorscheme": "default",
"comment": true,
"cursorline": true,
"diff": true,
"diffgutter": true,
"divchars": "|-",
"divreverse": true,
"encoding": "utf-8",
"eofnewline": true,
"fastdirty": false,
"fileformat": "unix",
"filetype": "unknown",
"ftoptions": true,
"ignorecase": false,
"indentchar": " ",
"infobar": true,
"keepautoindent": false,
"keymenu": false,
"linter": true,
"literate": true,
"matchbrace": true,
"mkparents": false,
"mouse": true,
"paste": true,
"pluginchannels": [
"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"
],
"pluginrepos": [],
"readonly": false,
"rmtrailingws": false,
"ruler": true,
"savecursor": true,
"savehistory": true,
"saveundo": true,
"scrollbar": false,
"scrollmargin": 3,
"scrollspeed": 3,
"smartpaste": true,
"softwrap": false,
"splitbottom": true,
"splitright": true,
"status": true,
"statusformatl": "$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)",
"statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help",
"statusline": true,
"sucmd": "sudo",
"syntax": true,
"tabmovement": false,
"tabsize": 4,
"tabstospaces": false,
"useprimary": true,
"xterm": false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment