# Bash + fzf Setup (Fish-like UX without switching shells) ## What was done - Decided to stay on Bash instead of switching to Zsh or Fish - Installed `fzf` and `bash-completion` via pacman (EndeavourOS) / apt (Debian VPS) - Added activation block to `~/.bashrc` ## Key insight You don't need to switch shells to get Fish-like autocomplete and fuzzy history. `fzf` drops straight into Bash with zero compatibility risk — and Bash stays consistent across desktop and VPS. ## The `.bashrc` block to add ```bash # bash-completion [[ -r /usr/share/bash-completion/bash_completion ]] && . /usr/share/bash-completion/bash_completion # fzf eval "$(fzf --bash)" ``` ## Commands | What | Command | |------|---------| | Install (Arch/EndeavourOS) | `sudo pacman -S fzf bash-completion` | | Install (Debian/VPS) | `sudo apt install fzf bash-completion` | | Reload config | `source ~/.bashrc` | | Fuzzy history search | `Ctrl+R` | | Fuzzy file search | `Ctrl+T` | | Fuzzy directory jump | `Alt+C` | | Jump to line in nano | `Ctrl+_` then line number | | Toggle line numbers in nano | `Alt+N` | ## When to use - Any time you set up a new Bash environment (VPS, new machine) - Same config works on Arch and Debian — package manager is the only difference ## Fixing a corrupted `.bashrc` If a paste goes wrong and injects garbage into `.bashrc`: 1. `cat -n ~/.bashrc` to find the broken lines 2. `nano ~/.bashrc` → `Ctrl+_` to jump to line number, `Ctrl+W` to search 3. Remove the injected string carefully, leaving the rest of the line intact 4. Watch for `esac` keywords — they're easy to corrupt and hard to spot 5. `source ~/.bashrc` to verify the fix ## Index line `bash_fzf_setup.md` — Bash fuzzy search setup; fzf + bash-completion; fixing corrupted .bashrc