A Neovim addon for browsing Gemini content using the
openk.py command.
It will support others, too, but openk is the one I started with.
:Go command to fetch Gemini pages and append content to
the current buffer--linkmode=end
option<Leader>. to pass the link under the cursor to
the :Go commandopenk.py command installed and accessible in your
PATHOptionally, ansi.nvim can add color to the page content by converting escape sequences.
Neovim/Vim support reading and writing remote files over the network,
but I dont know how to add additional protocols. For example, if you
want to make gf use openk.py instead of the
default for http/https you could do that with the following:
vim.g.netrw_http_cmd="openk.py %s >"
Put that in your init.lua and using gf on
http/https links would call openk.py on https links.
However, I don't know how to make that work for new schemes like
gemini.
Place this plugin in your Neovim plugin directory.
Add the following to your init.lua:
require('neopunk').setup()Or, the lazy way:
{
"https://thatit.be/neopunk.nvim.git",
}
Or using an example of the default config:
{
"https://git.thatit.be/neopunk.nvim.git",
config = function()
require("neopunk").setup({
key = "<Leader>.",
execute_command = "openk.py --linkmode=end %s",
})
end
}
:Go [URL]Fetches a Gemini page using opnk --linkmode=end and
appends the content to the current buffer.
<Leader>. in Normal
ModeIn text files (which includes Gemini content), pressing
<Leader>. will automatically use the :Go
command to fetch and display the link content.
gemini://thatit.be)<Leader>.The content from opnk --linkmode=end will be appended to
your buffer.
Before navigation:
gemini://thatit.be
After navigation (escape sequences preserved, highly recommend :AnsiEnable with ansi.nvim):
# gemini://thatit.be
2026-02-19 21:14: Fetched gemini://thatit.be
[31;1mthatit.be (14 links)[22;2m (last accessed on Tue Feb 17 11:01:27 2026)[39;22m[0m
[34;1;4mTHAT IT BE[39;22;24m
> [3m“Yes, it is,” not “That it be.” And you don’t have to talk in that[23m
> [3mstupid voice to me, I’m not a tourist![23m
– Blackadder
Among other content here is a collection of miscellaneous notes. They’re
not as clear and coherent as the entry-points below. They’re more ZK-
style notes that I’ve tagged as publishable so that I can review or
reference them later. They can be found by browsing the tags or cross
linked from other notes, or from the massive page of all notes.
[34mPosts[39m
[1] 2026-02-09 - launch email from offpunk
[2] 2026-02-07 - Doing Not Much Tweaking
[3] 2026-02-05 - Git and Email Patches
[4] 2026-02-04 - NixOS Books
[5] 2026-02-03 - added a pipeline
[6] 2026-01-30 - AI so far
[7] 2026-01-28 - git repos on thatit.be
[8] 2026-01-11 - Epy for Epub
[9] 2026-01-10 - AI in Neovim
[10] 2026-01-01 - making yogurt
[34mNavigation[39m
[11] all notes
[12] tags
[13] atom
[14] contact me
(re)generated: 2026-02-16[0m
[1] gemini://thatit.be/2026-02-09-15-31-46.gmi
[2] gemini://thatit.be/2026-02-07-18-54-20.gmi
[3] gemini://thatit.be/2026-02-05-22-03-16.gmi
[4] gemini://thatit.be/2026-02-04-22-16-06.gmi
[5] gemini://thatit.be/2026-02-03-08-38-56.gmi
[6] gemini://thatit.be/2026-01-30-16-14-51.gmi
[7] gemini://thatit.be/2026-01-28-06-37-54.gmi
[8] gemini://thatit.be/2026-01-11-09-50-48.gmi
[9] gemini://thatit.be/2026-01-10-11-01-40.gmi
[10] gemini://thatit.be/2026-01-01-09-10-40.gmi
[11] gemini://thatit.be/notes-all.gmi
[12] gemini://thatit.be/tags-all.gmi
[13] gemini://thatit.be/atom.xml
[14] gemini://thatit.be/contact.gmi
Further pages can be fetched by invoking over a numbered link. If it's from a numbered link in the page body it has the added bonus of using that link label in the heading it creates upon fetching the next page.
Last updated: 2026-02-21 11:05:30