sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"ln -sf ~/code/personal/dotfiles/zshrc ~/.zshrc
ln -sf ~/code/personal/dotfiles/gemrc ~/.gemrc
ln -sf ~/code/personal/dotfiles/tmux.conf ~/.tmux.conf
ln -sf ~/code/personal/dotfiles/vimrc ~/.vimrc
ln -sf ~/code/personal/dotfiles/gitignore_global ~/.gitignore_global
ln -sf ~/code/personal/dotfiles/gitconfig ~/.gitconfig
ln -sf ~/code/personal/dotfiles/claude_settings.json ~/.claude/settings.json
mkdir -p ~/Library/Application\ Support/Claude
ln -sf ~/code/personal/dotfiles/claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.jsonKey aliases defined in zshrc:
rs: Run RSpec via bin/rspecrsu: Run RSpec excluding system specsrt: Run Rails testsr: Rails commands via bin/railsb: Bundle commands via bin/bundle
The prompt shows the project name instead of the current directory, which is useful when working in git worktrees where the directory name often matches the branch name.
To create short aliases for project names (without committing them to this public repo), create ~/.project_aliases:
# ~/.project_aliases
typeset -A PROJECT_ALIASES
PROJECT_ALIASES=(
"my-long-project-name" "short"
"another-project" "proj"
)This file is sourced automatically if it exists. Your prompt will then show the alias instead of the full project name.
mkdir -p ~/.vim/pack/plugins/opt
cd ~/.vim/pack/plugins/opt
git clone git@github.com:tpope/vim-sensible.git
git clone git@github.com:christoomey/vim-tmux-navigator.git
git clone git@github.com:junegunn/fzf.git
git clone git@github.com:junegunn/fzf.vim.git
git clone git@github.com:dense-analysis/ale.git
git clone git@github.com:slim-template/vim-slim.git
git clone git@github.com:airblade/vim-gitgutter.git
git clone git@github.com:pantharshit00/vim-prisma.gitmkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim- Space is configured as the leader key
- Based on vim-sensible for good defaults
- Includes ALE for asynchronous linting
- Slim template syntax highlighting
The configuration includes fuzzy finding with FZF for efficient file navigation.
-
Install the FZF executable:
# For macOS with Homebrew brew install fzf # For Linux git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install
-
Optional: Add FZF to runtime path in vimrc if the above plugins don't work:
" For macOS with Homebrew set rtp+=/opt/homebrew/opt/fzf
Ctrl+p: Open file finder<leader>b: Browse open buffers<leader>g: Search git files (respects .gitignore)<leader>r: Search file contents using ripgrep
The configuration includes ALE (Asynchronous Lint Engine) for real-time linting:
- Linting occurs on file save, not continuously
- Trailing whitespace is automatically removed
- Rubocop enabled for Ruby files
- Prettier and ESLint for JavaScript/TypeScript files
- Prettier for JSON and CSS
- Signs in the gutter indicate errors and warnings
- Error/warning messages show which linter reported them
Ctrl+sis the prefix keyPrefix + c: Create new windowPrefix + -: Split horizontallyPrefix + \: Split verticallyCtrl+h/j/k/l: Navigate panesPrefix + C-r: Reload configShift+Arrow: Resize pane smallCtrl+Arrow: Resize pane largePrefix + b: Break panePrefix + C-j: Show session treePrefix + z: Toggle zoom/maximize pane
The active pane is highlighted for better visibility:
- Active pane has bright blue borders
- Active pane has darker background
- Inactive panes are slightly dimmed with grey borders
- Create a new session:
tmux new-session -s project_name -c /path/to/project - Create a new session from within tmux: Same command as above
- Switch to another session from within tmux:
tmux switch-client -t project_name - List all sessions:
tmux list-sessionsortmux ls - Attach to an existing session:
tmux attach -t project_name