Skip to content

Day One: Getting Started

Welcome to your new terminal environment! This guide bridges the gap between "installed" and "productive" by walking through the core workflows and tools you'll use every day.


1. The Terminal Experience

Open your terminal. You should see a prompt that looks something like this:

 ~/projects/my-app  main ✚  via ⬢ v18.19.0

This is Powerlevel10k. It's context-aware:

  • Path: Shows your current directory (truncated intelligently).
  • Git: Branch, status (✚ modified, ? untracked, ⇡ ahead, ⇣ behind).
  • Tool Versions: Shows the active version of Node, Python, Rust, etc., managed by mise.
  • Execution Time: If a command takes >2s, it shows how long.

Modern Core Utilities

We've replaced the standard unix tools with modern, Rust-based alternatives:

Command Replaces Why?
ls ls eza: Icons, git status, tree view (tree).
cat cat bat: Syntax highlighting, line numbers, git diffs.
grep grep ripgrep (rg): Blazing fast, ignores .gitignore.
find find fd: Simple syntax, ignores .gitignore.
ps ps procs: Tree view, readable output.
df df duf: Visual disk usage charts.

Note: We use "smart wrappers". Typing ls actually runs eza. Typing cat runs bat. If you ever need the real command, use command ls.


2. Navigation Flow

Stop typing cd ../../. There's a better way.

Jumping with zoxide (z)

zoxide learns your habits. The more you visit a directory, the higher it ranks.

  • z proj: Jumps to ~/projects (or your most visited "proj" folder).
  • z dot: Jumps to ~/repos/dotfiles.
  • cdi: Interactive selection. Type a few letters, then pick from a list.

Fuzzy Finding (fzf)

fzf is the glue that connects everything.

  • Ctrl+T: "I need a file." Opens a fuzzy finder for all files in the current subtree. Preview the content on the right.
  • Alt+C: "I need a subdirectory." Fuzzy find a folder and cd into it.
  • Ctrl+R: "I typed this yesterday." Fuzzy search your command history.

3. File Management

Yazi (y / ya)

Yazi is a blazing fast terminal file manager.

  1. Type ya to open it.
  2. Navigate with vim keys (h/j/k/l) or arrows.
  3. Preview files (even images!) instantly on the right.
  4. Press q to quit. Crucially, ya changes your shell's working directory to where you were in Yazi.

4. Git Workflow

Lazygit (lg)

Stop fighting with git CLI arguments for complex tasks.

  1. Type lg to open lazygit.
  2. Status: Use Space to stage/unstage files.
  3. Commit: Press c to commit.
  4. Push: Press P to push.
  5. Branches: Press n to create a branch.

It handles interactive rebasing (r), cherry-picking (c), and resolving conflicts visually.

Git Status in Tmux (gitmux)

Look at your tmux status bar (bottom right). It shows the git status of the active pane's directory: [branch ↑1 ↓2]


5. Editing

Neovim (v / vim / nv)

This setup uses a pre-configured Neovim based on LazyVim.

  • Space (<leader>) is your command key.
  • <leader>ff: Find files (Telescope).
  • <leader>sg: Grep (search text) in project.
  • <leader>e: Toggle file explorer (Neo-tree).
  • K: Hover documentation.
  • gd: Go to definition.

6. Secrets Setup

Don't paste API keys in your shell history!

  1. Quick Start: Copy the template.

    cp dot_secrets.example ~/.secrets
    nvim ~/.secrets
    
  2. Secure It: Use age encryption to safely back them up.

    mise run setup-secrets
    

See Secrets Management for details on rotation and server deployment.


7. Maintenance

Your environment is dynamic. Keep it healthy.

Updates

Run dots update (or dots up) to:

  1. Pull the latest dotfiles changes.
  2. Update mise tools.
  3. Update system packages (if configured).

Health Check

Something acting weird? Run dots doctor (or dots dr). It checks:

  • Paths and environment variables.
  • Missing dependencies.
  • Broken symlinks.
  • Deprecated configs.

Key Bindings Cheat Sheet

Key Context Action
Ctrl+T Shell Find file (fzf)
Alt+C Shell Change dir (fzf)
Ctrl+R Shell History search
Ctrl+O Tmux Switch to last active pane
Ctrl+H/J/K/L Vim/Tmux Seamless navigation between splits
g Shell Alias git
lg Shell Alias lazygit
d Shell Alias docker (or duf)
z Shell Alias zoxide jump