(noun) : something clever, trevor
Terminal text editor written in Fortran. VSCode-style keybindings.
The Makefile provides optimized, platform-specific builds:
- macOS arm64: Uses flang-new for better apple silicon support
- macOS Intel/Linux: Uses gfortran with standard optimization flags
make
./fac [filename]fpm build
./build/gfortran_*/app/fac [filename]
or
fpm run -- [filename]arrows- move cursorctrl-a/home- smart home (toggle between first non-whitespace and column 1)ctrl-e/end- end of linealt-left/right- jump by word/punctuation grouppageup/pagedown- page scrollmouse click- position cursormouse wheel/trackpad- scroll viewportalt-[/alt-]- jump to matching bracket
shift-arrows- character selectionshift-alt-left/right- word selectionshift-ctrl-a/e- select to line start/endshift-home/end- select to line boundariesshift-pageup/pagedown- page selectionmouse drag- select textesc- clear selection / exit multi-cursor mode
backspace/ctrl-h- delete backwarddelete- delete forwardtab- insert 4 spaces (or indent selection)shift-tab- dedent selection or current linectrl-k- kill line forward (yank stack)ctrl-u- kill line backward (yank stack)ctrl-y- yank from stackctrl-w/alt-backspace- delete word backwardalt-d/alt-delete/fn-alt-backspace- delete word forwardctrl-t- transpose charactersctrl-j- join lines
ctrl-x- cut line/selectionctrl-c- copy line/selectionctrl-v- paste
alt-up/down- move line up/downalt-shift-up/down- duplicate line up/down
ctrl-d- select next match (creates selections + cursors)alt-click- add/remove cursor at positionctrl-alt-up- add cursor on line abovectrl-alt-down- add cursor on line belowesc- exit multi-cursor mode (keep active cursor only)
ctrl-f- search forwardctrl-r- find and replace
alt-'- cycle quotes: " → ' → ` → "alt-shift-'- remove surrounding brackets/quotesctrl-z- undoctrl-]/ctrl-shift-z- redo (use ctrl-] if terminal intercepts ctrl-shift-z)ctrl-l- clear/redraw screen
ctrl-s- savectrl-q- quitctrl-b- toggle file tree (fuss mode)
ctrl-t- create new tabtab/shift-tab- switch between tabs
Split your view into multiple panes for side-by-side editing of the same file.
Creating Panes:
alt-v- split pane vertically (creates pane to the right)alt-s- split pane horizontally (creates pane below)
Navigating Panes:
alt-h/ctrl-shift-left- move to left panealt-l/ctrl-shift-right- move to right panealt-k/ctrl-shift-up- move to pane abovealt-j/ctrl-shift-down- move to pane below
Managing Panes:
alt-q- close current pane onlyctrl-w- close current pane (closes tab when last pane)
Features:
- Each pane has independent viewport and cursor
- Line numbers display in all panes
- Active pane shows with visible cursor
- Inactive panes have subtle dark background
- Minimum pane size enforced (20 columns)
When in fuss mode (ctrl-b), you get a split view with a git-aware file tree on the left (30%) and editor on the right (70%).
Navigation:
j/↓- move down in treek/↑- move up in tree
Opening Files:
enteroro- open file in new tab
Display Options:
.- toggle hiding dotfiles and gitignored files- When enabled, both dotfiles and gitignored files are hidden from view
- Directories containing only hidden files are greyed out but remain visible
- Uses
git check-ignoreto detect gitignored files
Git Operations:
a- stage file (git add)u- unstage file (git restore --staged)
Status Indicators:
- Green
↑- staged changes - Red
✗- modified tracked files - Gray
✗- untracked files
Exit:
esc- exit fuss mode back to editorctrl-b- toggle fuss mode off
ctrl-/orctrl-?- show keybindings (ctrl-/ is more reliable)
Some keybindings may be intercepted by your terminal emulator:
- Ctrl+A: Often intercepted by tmux/screen (use
Homeinstead) - Ctrl+Shift+Z: Intercepted by WezTerm in multi-pane mode (use
Ctrl+]instead) - Ctrl+': Most terminals send plain apostrophe (use
Alt+'instead) - Ctrl+Alt+Backspace: Most terminals send alt-backspace (use
Alt+Shift+'instead)
For WezTerm users, add to ~/.wezterm.lua to enable Ctrl+Shift+Z:
config.keys = {
{ key = 'Z', mods = 'CTRL|SHIFT', action = wezterm.action.DisableDefaultAssignment },
}Gap buffer for text storage. Pure Fortran with ANSI escape sequences.
MIT