Dotfiles symlinked on my machine
MacOS
Repeat key strokes
defaults write -g ApplePressAndHoldEnabled -bool falseFinder application set column view to default
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"Desktop doesn't display files
defaults write com.apple.finder CreateDesktop false
killall Finder
Mac Dev Applications
- Postgresql App (needed to enable
psqlfrom the cmdline) - Postman
Setup
Install Homebrew
SymLink dotfiles to their correct MacOS directories with stow:
Install Dependencies
I have started using a payed font: MonoLisa. You can either download a free trial or update the font references to your preferred font.
Core configuration:
brew install asdf atuin bat btop carapace coreutils db-browser-for-sqlite eza fd fz git git-delta libpq mole neovim nushell ripgrep starship tldr tree yazi zoxide brew install --cask font-jetbrains-mono-nerd-font font-maple-mono-nf brew install --cask nikitabobko/tap/aerospace brew install --cask raycast brew install jesseduffield/lazygit/lazygit brew install jesseduffield/lazydocker/lazydocker brew install sst/tap/opencode brew services start atuin
Supported Terminals / GUIs:
brew install --cask ghostty brew install --cask wezterm brew install --cask neovide-app
Apps I use:
brew install --cask brave-browser brew install --cask chatgpt brew install --cask claude brew install --cask discord brew install --cask firefox@developer-edition brew install --cask obsidian brew install --cask superlist brew install --cask visual-studio-code brew install --cask zed
Other fonts I sometimes use:
brew install --cask font-lilex-nerd-font font-recursive-mono-nerd-font font-cascadia-code-nf
Command Line Notes
NuShell
- Zsh is still the default terminal, but NuShell is the default shell in Ghostty and WezTerm
- NuShell ls can be accessed via
nuls - NuShell prompt has been configured with Starship
bat
cathas been aliased tobatwith better syntax highlighting
Carapace
- Autocompletion package set in the NuShell config
eza
ezais aliased aslsadding colors and nerd-font file icons
fzf
<C-t>search files by name<C-r>search recent commands
ripgrep
rgsearch standard files using the .gitignore file to ignore specific filesrg -.search hidden filesrg -usearch (unrestricted) ignored filesrg -uusearch (unrestricted) ignored and hidden filesrg -t=rubysearch ruby filesrg -t=jssearch javascript files
LazyGit
lazygitorlgto launch<Space>to add remove file<Enter>to stage hunkscto commit?for help[1-5]for quick navigation
Vim Style Bindings:
hquick navigation upjupkdownlquick navigation downqto quit
Yazi file manager
yazioryto launch
Vim Style Bindings:
hparent dirjupkdownlchild dir<C-d>page down<C-u>page upGbottom of listggtop of listyto yankpto pasteHfor previous dirLfor to walk back up the list of recent dirs/to search local dir<Esc>orqto exit
Yazi Commands
~to lisk all commands<Space>to selectaadd filerto renameofor open filedto deleteDto permanently delete<Tab>for file infocfor copying to clipboard (additional options on screen)
Searching
zfor zioxide (better cd navigation)Zfor fzfsto search file names under dirSto search for text In filesfto filter
Tabs
tto create a new tab[1-0]to navigate though tabs<C-c>to close tab
NeoVim
copilot
To initialize and authenticate copilot:
Snacks.picker
Jscrolls the preview text downKscrolls the preview text up<C-v>opens in a new vertical split
vim-visual-multi
Basic usage:
- select words with
<C-N>(like<C-d>in Sublime Text/VS Code) - create cursors vertically with Ctrl-Down/Ctrl-Up
- select one character at a time with Shift-Arrows
- press
n/Nto get next/previous occurrence - press
[/]to select next/previous cursor - press
qto skip current and get next occurrence - press
Qto remove current cursor/selection - start insert mode with
i,a,I, orA
Two main modes:
- in cursor mode commands work as they would in normal mode
- in extend mode commands work as they would in visual mode
- press Tab to switch between «cursor» and «extend» mode
Most vim commands work as expected (motions, r to replace characters, ~ to change case, etc). Additionally you can:
- run macros/ex/normal commands at cursors
- align cursors
- transpose selections
- add patterns with regex, or from visual mode
And more... of course, you can enter insert mode and autocomplete will work.
mini-ai
- Mutli type edits (works better will registers such as
.)- Brackets (supports
({[):cibchange inside bracketdibdelete inside bracketcabchange around bracketdabchange around bracket
- Quotes (supports
"`'):ciqchange inside quotediqdelete inside quotecabchange around bracketdabchange around bracket
- Brackets (supports
- Treesitter upgrades
- Arguments:
ciachange in next argumentcinachange in next argumentcanachange around next argumentcilachange in last argumentcalachange around last argument
- Function:
difdelete in functiondinfdelete in next functiondanadelete around next functiondiladelete in last functiondaladelete around last function
- Arguments:
mini-splitjoin
gStoggle split/join
mini-bracketed
[+ upper-suffix : go first.[+ lower-suffix : go backward.]+ lower-suffix : go forward.]+ upper-suffix : go last.
buffer = { suffix = 'b' }, comment = { suffix = 'c' }, conflict = { suffix = 'x' }, diagnostic = { suffix = 'd' }, file = { suffix = 'f' }, indent = { suffix = 'i' }, jump = { suffix = 'j' }, location = { suffix = 'l' }, oldfile = { suffix = 'o' }, quickfix = { suffix = 'q' }, treesitter = { suffix = 't' }, undo = { suffix = 'u' }, window = { suffix = 'w' }, yank = { suffix = 'y' },
Colorscheme
The following are configured to use Tokyonight in dark mode and Catppuccin Latte in light mode. Note: btop can not transition automatically and is only configured for dark mode.
- Ghostty
- LazyGit
- NeoVim
- NeoVim bufferline plugin
- NeoVim lualine plugin
- Wezterm
- Yazi
- bat
- btop
- delta
- fd
- fzf
ASDF Version Manager
Install language plugins
asdf plugin add elixir asdf plugin add nodejs asdf plugin add ruby asdf plugin add pnpm
Install the latest versions
asdf install elixir latest asdf install nodejs latest asdf install ruby latest asdf install pnpm latest
npm global config
npm install --global corepack@latest
Check for new plugin versions
NeoVim RubyLSP Plugins
gem install bundler ruby-lsp rubocop erb_lint erb-formatter yard
VS Code
Install the cmdline tools
code --install-extension ms-vscode.cpptools
List current extensions
Install extensions
code --install-extension bradlc.vscode-tailwindcss code --install-extension dbaeumer.vscode-eslint code --install-extension deerawan.vscode-dash code --install-extension eamodio.gitlens code --install-extension enkia.tokyo-night code --install-extension esbenp.prettier-vscode code --install-extension github.codespaces code --install-extension github.copilot code --install-extension github.copilot-chat code --install-extension misogi.ruby-rubocop code --install-extension mjmcloug.vscode-elixir code --install-extension ms-vsliveshare.vsliveshare code --install-extension shopify.ruby-lsp code --install-extension ue.alphabetical-sorter code --install-extension vscodevim.vim code --install-extension vue.volar
Install Vi (Non NeoVim) Plugins:
Launch vim and run :PluginInstall
To install from command line: vim +PluginInstall +qall