Code Editor Setup (Updated 2026)
Editor: Neovim
Currently I run a pretty standard setup with a few plugins for LSP, completion, and syntax highlighting.
Layout: TMUX
Eaglery awaiting but for now I use to launch all projects with this layout:

File tree, editor, terminal and AI agent all in one window.
AI Agent: Pi
Currently using with a very basic setup leveraging the cheaper, and much faster models than the major providers. Flash models for grunt work, standard models for rubber-ducking, planning and implementations.
AI Agent: Claude
Currently using for longer explorations and transient projects. Recently impressed with Claude’s assistence in building add-ons in to assist authoring in a Blender to Godot pipeline.
Implementation
Nothing fancy here, just lets me run dev project to launch the editor.
#!/bin/bash
export PATH="/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
PROJECT_DIR="$1"
# Strip . from project name if it starts with . (e.g., .config -> config)
SESSION_NAME="${2:-$(basename "$PROJECT_DIR" | sed 's/^\.//')}"
# Exit if session already exists
tmux has-session -t "$SESSION_NAME" 2>/dev/null && tmux attach -t "$SESSION_NAME" && exit 0
# Create new session (top-left pane: nvim)
tmux new-session -d -s "$SESSION_NAME" -c "$PROJECT_DIR"
# Split horizontally: right pane (opencode), 6% width, in same directory
tmux split-window -h -p 6 -t "$SESSION_NAME":1.1 -c "$PROJECT_DIR"
# Split vertically: bottom-left terminal (12 lines tall), in same directory
tmux select-pane -t "$SESSION_NAME":1.1
tmux split-window -v -l 12 -t "$SESSION_NAME":1.1 -c "$PROJECT_DIR"
# Send commands
tmux send-keys -t "$SESSION_NAME":1.1 "nvim ." C-m
# bottom-left terminal
tmux send-keys -t "$SESSION_NAME":1.2 "zsh" C-m
# right pane
# tmux send-keys -t "$SESSION_NAME":1.3 "opencode" C-m
# tmux send-keys -t "$SESSION_NAME":1.3 "claude" C-m
tmux send-keys -t "$SESSION_NAME":1.3 "pi -c" C-m
# Attach
tmux attach -t "$SESSION_NAME"typeset -A PROJECTS
PROJECTS=(
nvim-config "$HOME/.config/nvim"
pi-config "$HOME/.pi"
tmux-config "$HOME/.local/bin"
...projects list
)
# Launcher
dev() {
local key="$1"
local path="${PROJECTS[$key]}"
if [[ -z "$path" ]]; then
echo "Unknown project: $key"
echo "Available projects:"
for k in ${(k)PROJECTS}; do
echo " $k"
done
return 1
fi
"$HOME/.local/bin/tmux-default-layout" "$path"
}
Published
Last edited