Markdown CLI viewer with VI keybindings

77 points by taf2 a day ago on hackernews | 35 comments

juancn | a day ago

A screenshot would be a nice addition to the readme.

It seems is only pure text (no support for image extensions of a terminal, just a link to the image), based on this: https://github.com/taf2/mdvi/blob/master/src/renderer.rs

It looks nice and clean code.

[OP] taf2 | a day ago

Thanks i added a screenshot and in 0.2 you can see images now in the cli too

m4r71n | 23 hours ago

The screenshot you added uses a transparent terminal where you can see your Discord chat in the background. You might want to remove that ;-)

forty | 23 hours ago

Why would someone use a transparent window background? Are people really reading the window behind it at the same time as the foreground window?

[OP] taf2 | 21 hours ago

pretty fun right :)

keithnz | 19 hours ago

no.... and your screen shot completely fails to show off your tool

[OP] taf2 | 6 hours ago

There is a pull request option - feel free to use it

alextingle | 20 hours ago

Example: If a build is going on in the background, I can see when it stops.

skydhash | 19 hours ago

You can use `build-tool; tput bel` to hear the bell when it ends. Some terminal allows to set the urgent flag on the windows when the bell rings.

forty | 15 hours ago

Yeah I have used desktop notifications for such things (via notify-send etc), but I'm going to accept this explanation for transparent background as it makes some sense to me.

verdverm | a day ago

https://github.com/charmbracelet/glamour

Charm Glamour with a view port uses basic vi keybinds as well

maxsimb | a day ago

https://github.com/Vagab/mark similar tool, but with editing enabled also!

eyjafjalajokull | a day ago

It’s funny to see markdown tools popping up with the rise of agents.

kalterdev | a day ago

Isn’t vi good enough?

munk-a | a day ago

No, I prefer emacs.

syngrog66 | a day ago

makes sign of cross, and hisses

kurtis_reed | 19 hours ago

vi was mentioned because this software has "VI keybindings". no one asked what you prefer.

w0m | a day ago

NeoVim w/ render-markdown.nvim

(not to poo on OP - I dig a clean TUI renderer, I have BAT installed for a reason)

Blackarea | a day ago

Bat is nice. Oh dang now i have to try this plugin. I remember trying a couple of similar ones that got me so frustrated that i abandoned the idea of markdown viewers in nvim... Here we go again XD

chrysoprace | 21 hours ago

render-markdown.nvim is very nice and works with GitHub Flavoured Markdown, even down to some of the newer features like INFO, IMPORTANT, etc. quotes.

llimllib | a day ago

I created one I like: https://github.com/llimllib/mdriver

it can echo images with kitty image protocol, and streams the output, which I use to show LLM output as it arrives

It doesn't handle paging - you can pipe it to `less` or whatever pager for that

syngrog66 | a day ago

ie. vim

[OP] taf2 | a day ago

aka view

pss314 | a day ago

Markdown reader using find, fzf and lnav

  find . \( -path '*/vendor/*' -or -path '*/.git/*' -or -path '*/node_modules/*' \) -prune -or -type f -name "*.md" -print | fzf | xargs lnav
In the above command, the find command excludes directories such as "vendor" (golang), ".git" (git) and "node_modules" (nodejs). The lnav itself provides the markdown support https://lnav.org/2022/08/06/markdown-support.html

Blackarea | a day ago

3 source files, nice code, no vibe-coding slob, nice little project... That's rare these days

gigatexal | a day ago

You had me at vi bindings

jonaustin | 22 hours ago

Glow is pretty great and has been around for a while:

https://github.com/charmbracelet/glow

ghost-of-dmr | 22 hours ago

Markdown is already readable as-is. How is this any different from running "more my_file.md" ?

Stop trying to re-invent the wheel when the tools are already there.

collinvandyck76 | 20 hours ago

This is an odd comment on "Hacker" news. There's a joy to be had in making things like this, even though there are better alternatives and it's often a weird thing to do in the first place. I often do not post the things I create here and elsewhere because I dread this kind of feedback. What do you hope OP takes away from your post?

[OP] taf2 | 10 hours ago

Great question- rather then having to push a change to GitHub to see the format changes you can just mdvi it now. Iterate locally is nice

smoyer | 20 hours ago

Here's the one I use a lot ... And the underlying `glamour` library is great for programmatic markdown display: https://github.com/charmbracelet/glow.

metalliqaz | 20 hours ago

It's funny because the whole idea of Markdown is that it is readable both as text and rendered, so it shouldn't require a terminal renderer.

joshka | 18 hours ago

Hey if there's significant overlap, what about coming and collab-ing on https://github.com/joshka/tui-markdown? (crate + cli, rust / ratatui / crossterm based)

socceroos | 17 hours ago

I personally would have liked colours support like Glow has. At least the ability to theme it so we can add colours if we want. Nice tool, though.

nikvdp | 13 hours ago

If you like the man page aesthetic, using pandoc with groff is the most readable way to read markdown on the terminal I've found:

    mdless() {
        if command -v pandoc >/dev/null; then
            if [[ -z "$1" ]]; then
                cat | pandoc -s -f markdown -t man | groff -T utf8 -man | less
            else
                pandoc -s -f markdown -t man "$*" | groff -T utf8 -man | less
            fi
        else
            less "$@"
        fi
    }