A compact Fresh setup for single-file editing: Fresh built-in Vi mode, Markdown page view, minimal chrome, and a Nerd Font statusline.
fresh_pretty_vim is now a pure appearance/profile shell around Fresh's built-in vi_mode plugin.
- Fresh built-in
vi_modeprovides all Vim behavior: modes, keymaps, counts, operators, motions, registers, text objects, visual selections, repeat, and:command behavior. fresh_pretty_vimprovides only the statusline appearance and profile defaults.- This repository does not patch or duplicate Fresh's Vim implementation.
- Enables Fresh built-in
vi_modeand configures it to auto-start. - Keeps the compact left mode chip:
NORMAL, INSERT, VISUAL. - Keeps a compact right status area: language, cursor position, and Fresh's built-in encoding token.
- Uses Fresh's native vertical scrollbar for scroll progress.
- Disables Fresh's cursor-jump trail animation and keeps plugin motion short.
- Hides the menu bar and tab bar while keeping Fresh's native vertical scrollbar visible.
- Enables Markdown page view and line wrap.
plugins/fresh_pretty_vim.ts # appearance/statusline only
plugins/fresh_pretty_vim.i18n.json # legacy translations retained for compatibility
types/fresh.d.ts # Fresh plugin API types for local checking
config/config.json # Fresh UI, built-in vi_mode, and plugin config
shell/fish/functions/fe.fish # Optional fish wrapper, creates missing local files
install.sh # Copy files into ~/.config/fresh
setup.ps1 # Copy files into $env:APPDATA\fresh on Windows
git clone https://github.com/NihilDigit/fresh-pretty-vim.git
cd fresh-pretty-vim
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup.ps1The Windows setup script installs into $env:APPDATA\fresh, which is the config directory reported by fresh --cmd config paths. To install somewhere else, set FRESH_CONFIG_DIR before running it.
git clone https://github.com/NihilDigit/fresh-pretty-vim.git
cd fresh-pretty-vim
./install.shBoth installers back up existing target files with a timestamped .bak suffix, then copy the plugin and config into the Fresh config directory.
Restart Fresh after installing.
The installed config/config.json keeps fresh_pretty_vim enabled for the statusline and profile defaults, and enables Fresh built-in vi_mode with auto-start:
"plugins": {
"vi_mode": {
"enabled": true,
"settings": {
"autoStart": true
}
},
"fresh_pretty_vim": {
"enabled": true
}
}The right status bar uses the plugin's appearance-only info token plus Fresh's native encoding token:
"status_bar": {
"right": ["{fresh_pretty_vim:info}", "{encoding}"]
}Do not add Vim keymaps to fresh_pretty_vim; configure or improve Vim behavior in Fresh's built-in vi_mode upstream.
cp shell/fish/functions/fe.fish ~/.config/fish/functions/fe.fishfe missing.md creates missing.md first, then opens it with Fresh. Fresh location syntax also works, for example fe notes.md:12.
The wrapper only skips obvious non-file arguments such as flags, -, URLs, and scp-style remote paths. If you pass a plain positional argument that is not meant to be a file, it may still create a local file. Set FE_CREATE_MISSING=0 to disable automatic creation for one shell session.
- Fresh with the built-in
vi_modeplugin and itsautoStartsetting. - A Nerd Font in the terminal.
marksman, if you want Markdown LSP support.