My Dotfile Favorites

Posted on Sep 25, 2021

Dotfiles are used to customize your system. The “dotfiles” name is derived from the configuration files in Unix-like systems that start with a dot (e.g. .bash_profile and .gitconfig). In this post I will share some of my most used configurations for some common dotfiles.

.zshrc

greph () {
    fc -ln 0 | grep --color=auto $1 | awk '!seen[$0]++' | sed -e 's/^/>> /'
}

I love this one. Probably my favorite in this dotfile. Usually I find myself having to type a very long CLI command to execute something. Then execute some other commands. If I have to repeat that same command, I’ll have to press up arrow key to go back the entire command execution history and find the command or re-type it from stratch or copy it in a notepad and paste it back. With this I can simply greph substring_of_command and get every matching command that was recently executed.


grepr () {
    grep -nri $1 *
}

This one helps me find a text pattern in current location and all its sub-directories. Pretty useful when you know a term but can’t remember the location. I have a folder where I store a bunch of notes in markdown files. Doing a quick grepr text_i_want gives me the results.


u () {
   set -A ud
   ud[1+${1-1}]=
   cd ${(j:../:)ud}
}

It’s tedious having to cd .. all the way up a deeply nested folder. With this you can simply u 10 to go 10 directories up.


alias gls="gls --color=auto --group-directories-first -X -1"
alias cls="clear"
alias cdu="cd .."
alias gitc='git commit -m'
alias gits='git status'
alias gitl='git log'
alias gita='git add -A'
alias gitd='git diff'
alias gitb='git branch'
alias gitp='git pull'
alias gitch='git checkout'

These are my goto aliases on a daily basis. cls is probably my most used, can’t live without it. If on a remote host I still do alias cls='clear' and go about doing my work on that host 😂 that’s how much I need it.

Some other zsh configurations I have:

  • powerlevel10K theme
  • ohMyZsh

.tmux.conf

unbind-key C-a
set -g prefix `
bind-key ` send-prefix

This update the prefix key to the tilde character. I find it so much more convenient and easy to reach.


set -g base-index 1

Sets the window indexing from 1. Makes more sense because on your keyboard 0 is at the right end which is supposed to represent the first window.


set -g history-limit 100000

Sometimes when you have a long file printed out the tmux window history is limited by some default lines and you lose ability to scroll beyond that.


set -g default-terminal "xterm-256color"

If not colored already, this colors the terminal similar to syntax highlighting for code but in this case highlights prompt, folderes, executables, etc. in its own colors.

.vimrc

set nu              # line numbering
set relativenumber  # google it
set cursorline      # adds an underline to where cursor currently is
set wildmenu        # google it
set autoindent      # intelligently indent different files when editing
syntax on           # syntax highlighting
colorscheme elflord # highlighting color scheme
set tabstop=4       # each tab will have 4 spaces instead of usual 8
set shiftwidth=4    # google it
set softtabstop=4   # google it
set expandtab       # makes space character for each tab
set nowrap          # vim editor will not wrap lines to go to next line
set sidescroll=2    # speed of sidescroll
set hlsearch        # each search will highlight the pattern
set ic              # ignores case when searching