Warning: Donβt blindly use my settings unless you know what that entails. Use at your own risk!
- Neovim β Custom plugins, keybindings, and themes (LazyVim)
- Tmux β Optimized terminal workflow
- Git β Configuration for efficient version control
- Karabiner β Custom key mappings with Fn (Hyper) key
- Fish Shell β Enhanced terminal experience with Tide prompt
- FZF β Fuzzy finder with fd, ripgrep, bat integration
- GNU Stow β Simple dotfiles management
This repository uses GNU Stow to manage dotfiles efficiently with symlinks. Follow these steps to set up your new machine:
macOS:
brew install stow git fish tmux neovim fd ripgrep bat eza fzfLinux (Debian/Ubuntu):
sudo apt update && sudo apt install stow git fish tmux neovimLinux (Arch):
sudo pacman -S stow git fish tmux neovimA plugin manager for Fish
macOS:
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisherThe ultimate Fish prompt.
macOS:
fisher install IlanCosman/tide@v6git clone https://github.com/crafts-cnc/.dotfiles.git ~/.dotfiles
cd ~/.dotfilesTo symlink all configurations:
# Using run script (recommended)
~/.dotfiles/stow_setup.sh
# Without script
stow -v . # [Add -R flag if need]To symlink specific configurations:
# Stow .config package contains fish, tmux, nvim,...
stow -v ~/.dotfiles/.config
# Stow biome file configurations
stow -v ~/.dotfiles/biome.jsonexec fish # or exec zshCheck if configurations are correctly applied:
echo $SHELL # Should show fish or zsh
nvim --version # Ensure Neovim is installedI use Karabiner to customize keyboard mappings for Vim efficiency and FZF workflows.
brew install --cask karabiner-elementsVim Efficiency:
Caps LockβLeft ControlCtrl + [βEscapeFn + h/j/k/lβ Arrow keys
FZF Workflows (Fn as Hyper Key):
Fn + fβ Fuzzy find filesFn + dβ Fuzzy find directoriesFn + gβ Git modified filesFn + bβ Git branchesFn + ;β Git logFn + pβ Projects switcherFn + tβ Tmux sessionsFn + wβ Tmux windowsFn + nβ New tmux sessionFn + qβ Kill tmux sessionFn + sβ Ripgrep searchFn + xβ Kill processesFn + oβ Kill by port
Search in the registry:
Comprehensive fuzzy finder integration with modern CLI tools, based on official fzf documentation.
brew install fzf fd ripgrep bat eza ghq- fd β Fast file/directory search (replaces find)
- ripgrep β Fast text search with live reload
- bat β Syntax-highlighted file previews
- eza β Modern ls with tree view for directories
- Solarized Dark theme matching Ghostty terminal
- ghq β Project management
| Key | Function | Description |
|---|---|---|
Fn+f |
Files | Search files with fd + bat preview |
Fn+d |
Directories | Navigate directories with eza tree |
Fn+g |
Git files | Browse git modified files |
Fn+b |
Git branches | Switch git branches |
Fn+; |
Git log | Browse git commit history |
Fn+p |
Projects | Switch between projects (ghq) |
Fn+t |
Tmux sessions | Switch tmux sessions |
Fn+w |
Tmux windows | Switch tmux windows |
Fn+n |
New session | Create and switch to new tmux session |
Fn+q |
Tmux kill | Kill tmux sessions/panes |
Fn+s |
Ripgrep | Interactive text search with live reload |
Fn+x |
Processes | Kill processes with confirmation |
Fn+o |
Ports | Kill processes by port number |
Ctrl+r |
History | Search command history |
# Interactive ripgrep search
fzf_ripgrep [pattern]
# Quick process killer
fzf_kill # SIGTERM
fzf_kill -9 # SIGKILL
# Kill tmux sessions or panes
fzf_tmux_kill # Kill sessions (multi-select)
fzf_tmux_kill --panes # Kill panes
# Create new tmux session
fzf_tmux_new_session # Prompt for name, create and switch
# Two-phase ripgrep search
fzf_rg "search term"
# And more: fzf_files, fzf_directories, fzf_git_branches, fzf_git_log, etc..config/fish/conf.d/fzf.fishβ FZF environment variables.config/fish/conf.d/fzf_bindings.fishβ Key bindings.config/fish/functions/fzf_*.fishβ Individual workflow functions.config/karabiner/karabiner.jsonβ Fn key mappings
- Neovim >= 0.9.0 (with LuaJIT)
- Git >= 2.19.0
- LazyVim
- A Nerd Font (v3.0+ for icons)
- lazygit (optional)
- A C compiler for
nvim-treesitter - Telescope.nvim dependencies:
- Supported Terminals:
- Solarized Osaka
Add this to your ~/.zshrc or ~/.bashrc:
export TERM="xterm-256color"
[[ -n $TMUX ]] && export TERM="screen-256color"Restart your shell after making the changes.
Add the following options in init.lua or ~/.config/nvim/lua/config/options.lua:
vim.opt.spell = true
vim.opt.spelllang = { 'en_us' }Run:
infocmp > /tmp/$TERM.tiOpen /tmp/$TERM.ti and find this line:
smul=\E[4m,Modify it by adding:
Smulx=\E[4:%p1%dm,Save the file.
Run:
tic -x /tmp/$TERM.tiClose and reopen iTerm2, then check if undercurl works:
echo -e "\e[4:3mUndercurl Test\e[0m"- Takuya's blog - vim-setup-to-speed-up-javascript-coding-for-my-electron-and-react-native-apps
- Takuya's blog - a-productive-command-line-git-workflow-for-indie-app-developers
- GNU Stow cheat sheet
π Happy Coding!






