My Local Development Setup - 2018

October 2018 · 5 minutes

I like my local development setup to be lean and automated. This allows me to get up and running with a new machine in under an hour. The following is a comprehensive walk through of the tools and productivity modifications that I use.

This walk through references several configuration files. These configuration files (typically referred to as dotfiles) can be found here

macOS

Rebind Caps Lock to Control

To rebind Caps Lock (⇪) to Control (⌃) go to System Preferences > Keyboard > Modifier Keys… and change Caps Lock (⇪) Key: to ^ Control.

Configure shortcuts

To configure macOS shortcuts, go to System Preferences > Keyboard > Shortcuts.

For macOS, my shortcuts are as follows:

Show Spotlight search ^Space

To configure application shortcuts, go to App Shortcuts > + and enter the Menu Title as given in the application and the desired keyboard shortcut.

For Chrome, my shortcuts are as follows:

Menu Title Shortcut
New Tab ^T
Select Next Tab ^K
Select Previous Tab ^J
Close Tab ^W
Find… ^F
Find Next ^G
Find Previous ^B
New Window ^N
Close Window ^Q
Open Location… ^L
Reload This Page ^R

Remove dock auto-hide delay

On the off chance that I use the dock, this ensures that it appears without a delay:

defaults write com.apple.dock autohide-time-modifier -int 0
defaults write com.apple.dock autohide-delay -int 0

Enable Key Repeat

To enable key repeat, use the following command:

defaults write -g ApplePressAndHoldEnabled -bool false

To modify key repeat speed, go to System Preferences > Keyboard > and increase or decrease Key Repeat and Delay Until Repeat.

Git

Git is a version-control system for tracking changes in computer files and coordinating work on those files among multiple people.

Installation

The easiest way to install Git on macOS is to install the Xcode Command Line Tools:

xcode-select --install

Configuration

ln -s ~/path/to/remote/.gitconfig ~/.gitconfig

iTerm2

iTerm2 is a replacement for the standard macOS terminal.

Installation

curl -LOk https://iterm2.com/downloads/stable/iTerm2-3_2_7.zip
unzip -q iTerm2-3_2_7.zip
mv iTerm.app /Applications
rm iTerm2-3_2_7.zip

Configuration

To set the plist, go to Preferences > General. Under Preferences, set Load preferences from a custom folder of URL to the location of com.googlecode.iterm2.plist.

To set the color scheme, go to Preferences > Profiles > Colors > Color Presets… > Import… and import colorscheme.itermcolors. colorscheme will then appear under Color Presets….

Zsh

Oh My Zsh is an open source, community-driven framework for managing your Zsh configuration. I use a fork containing my custom amuse theme.

Installation

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Or use:

cd ~
git clone https://github.com/NickolasHKraus/oh-my-zsh .oh-my-zsh
cd .oh-my-zsh
git remote add upstream git@github.com:robbyrussell/oh-my-zsh.git

Configuration

ln -s ~/path/to/remote/.zshrc ~/.zsrhc

Powerline

Powerline is a statusline plugin for Vim, and provides statuslines and prompts for several other applications including tmux.

Installation

pip install --user powerline-status

This will install Powerline to the Python user install directory for your platform. On macOS, this is typically ~/.local/.

Note: If you use a virtualenv, you will need to install powerline-status to it as well.

Configuration

I am currently using the default configuration of Powerline.

Powerline fonts

Powerline fonts are pre-patched and adjusted fonts for usage with the Powerline statusline plugin.

Installation

git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts

Configuration

There is no further configuration needed for Powerline fonts.

Homebrew

Homebrew is an exceptional package manager for macOS.

Installation

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Configuration

There is no further configuration needed for Homebrew.

tmux

tmux is a terminal multiplexer. It enables a number of terminals to be created, accessed, and controlled from a single screen.

Installation

brew install tmux

Configuration

ln -s ~/path/to/remote/.tmux.conf ~/.tmux.conf

Vim

Vim is an enhanced clone of the vi editor. It is highly configurable and extremely useful for productive, efficient programming.

Installation

brew install vim

Configuration

ln -s ~/path/to/remote/.vimrc ~/.vimrc

Vundle

Vundle is a Vim plugin manager. It allows you to install, update, and configure Vim plugins all from within your .vimrc.

Installation

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Configuration

To install Vim plugins, execute:

vim +PluginInstall +qall

mpv

mpv is a free, open source, and cross-platform media player.

Installation

brew install mpv

Configuration files

ln -s ~/path/to/remote/mpv.conf ~/.config/mpv/mpv.conf

Spectacle

Spectacle is a simple, customizable application for moving and resizing windows.

Installation

curl -LOk https://s3.amazonaws.com/spectacle/downloads/Spectacle+1.2.zip
unzip -q Spectacle+1.2.zip
mv Spectacle.app /Applications
rm Spectacle+1.2.zip

Configuration

ln -s ~/path/to/remote/Shortcuts.json ~/Library/Application\ Support/Spectacle/Shortcuts.json

Ag

Ag (The Silver Searcher) is a code searching tool similar to ack, with a focus on speed.

Installation

brew install ag

Configuration

ln -s ~/path/to/remote/.agignore ~/.agignore

Once you have Ag installed, you can use it with ack.vim by adding the following line to your .vimrc:

.vimrc

let g:ackprg = 'ag --nogroup --nocolor --column'

fzf

fzf is a general-purpose command-line fuzzy finder.

Installation

brew install fzf
$(brew --prefix)/opt/fzf/install

Configuration

Once you have fzf installed, you can enable it inside Vim simply by adding the directory to &runtimepath in your .vimrc:

.vimrc

" if installed using Homebrew
set rtp+=/usr/local/opt/fzf

Other Applications

Bear

Bear is a beautiful, flexible writing app for crafting notes and prose. I love this application because it allows me to write in Markdown.

Gifox

Gifox is a delightful GIF recording and sharing app. It is great for quickly creating GIFs.

Trello

Trello is simple and effective project management tool. I use Trello for organizing all my personal projects.

There you have it, a complete list of the tools and productivity modifications that I use. I am always looking for new ways to increase my effectiveness and will update this article with any new applications or utilities that I find.