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.