Writing Novels and Non-Fiction with Visual Studio Code
You’re probably thinking, whoa, hold on there, what?

Screenshot shows a chapter from Soldier
Feb 2025 Update: This update comes nearly five years after the first draft. I have now published a total of 16 full novels with this system (> 1M words!).
TL;DR
I use Microsoft’s Visual Studio Code to write novels and use a post-processing technique called QuillDrop to produce my upload ready document. A rather nerdy endeavor for an author of ancient history, and it turned out to be the best thing I ever did. My writing process is probably 30-40% faster than my previous methods, more pleasurable, and I’ve reduced final pre-production effort by 70-80% compared to what I did previously.
Introduction
Many writers (fiction, not computer programming) probably haven’t even heard of Visual Studio Code. Is it a graphics program? Is it studio software? Those who have might wonder how a programming editor can possibly be good for writing books.
Well, someone had to go there, and I did. Brave and the bold. Or maybe just stupid. In hindsight, it was not stupid at all. All my novels have now either been revised, or written entirely, using the approach described below, with Microsoft’s free Visual Studio Code programming editor.
Before anyone questions my sanity, here is my journey with writing tools:
- First, I tried Microsoft Word.
- Then, I went to OneNote so I could better organize the manuscript before packaging it for publishing.
- Then, I tried Scrivener — briefly — an established tool for novelists with customized features for writing.
- After that, I dabbled with Ulysses — an excellent software for Mac and iPad, customized for writing needs. I wrote significant parts of The Wrath of God with Ulysses.
- I also briefly flirted with Bear and IA Writer, both great tools for Markdown-centric writing. (What is markdown?)
- And then I returned to Microsoft Word because I found myself restricted by certain aspects of Ulysses.
But each time, I felt constrained by something or the other:
- Difficulties in managing chapters, writing speed, moving things around, navigating, creating beta versions or box sets, and wasting time on formatting too early in the process.
- Inability to easily get robust metrics (I’m a bit of a numbers guy), or keep track of development history.
- Lack of content portability (getting tied into proprietary formats).
Each of these ultimately impacted productivity because writing and publishing a book is not just about “writing.” There’s a lot that goes into preparing a book for Amazon or elsewhere.
A Typical Writing Process
- Writing.
- Polishing the work (grammar, pacing, rewrites, reviews, etc.).
- Understanding the writing metrics to smooth out rough edges (unbalanced POVs, excessively long chapters, etc.).
- Getting it beta read with multiple people, revising.
- Sending it for proofreading or querying.
- Exporting to publishable formats (Word, ePub, mobi, PDF, etc.).
- Publishing.
Now, consider the effort and complexity when manuscripts are 80–100,000 words, split into 50+ chapters. And multiple such books. It gets a bit hairy. I also found it really hard to update my backmatter and book lists of each book after I released a new one. It was also challenging to bring all books to the same look-and-feel if I wanted to revise.
How Could I separate content from format?
So, I finally thought, could an old guy (alright, I’m not that old) think of using some of these fancy programming editors that come with a lot of useful features? I’m a tinkerer by nature and enjoy exploring new things.
And that’s how I jumped into using Visual Studio Code for writing my manuscript. Here’s what attracted me to it.
Here are ten things that made this really valuable for me:
The Ten Features of Visual Studio Code I Use for Writing My Novels
- Fast Writing and Powerful Extensions — The autocomplete feature enabled by the
All Autocomplete
extension can enhance writing speed and reduce writing errors. I now use Supermaven which helps in simple sentence autocomplete. There are also extensions to help with Markdown writing, live preview, and many, many others. - Beautiful dark themes — (
Pitch Black
orDracula
) which are easy on the eyes, and the ability to customize themes and fonts. I’ve since tried other beautiful themes — my current favorite isHorizon
. It’s wonderful. - Excellent Markdown editor with CSS customization and live preview that scrolls in sync with the editor. The outline view is a superb navigation feature that lets you jump to sub-sections (particularly helpful for non-fiction, academic, or computer-related writing).
- A Zen Mode that keeps the focus only on the editor.
- Ability to see chapter word counts, spell check, fast search, global search, and search-replace.
- Integrated version control — I can save versions of my chapters as many times as I want and go back to any version I want.
- Works on files on the folder, which means I can open these files from any editor, including simple notepads, wherever and whenever, and continue to work. For example, on iPad, I use GoCoEdit. It’s this ability to work on simple text files that also makes it perfect for scripting against it.
- Split editor — Open multiple versions, the same chapter in two places, reference files, to-dos — whatever you want. In fact, the split can be more than two — if you have a large monitor, you can have 3 vertical splits with each having a horizontal split, or a 2 x 2 grid.
- Line number and right-side mini-view that’s great for navigating large chapters and going back and forth.
- VIM mode support — Most people won’t know about this outside coders, but this is a fantastic writing emulation that lets you write and navigate text files really fast using just keyboard strokes. It takes a little getting used to, but once you get a hang of it, it’s amazing! I cannot stress this enough — Vim has truly powered writing for me. In terms of writing speed, the combination of Autocomplete and Vim keystrokes is the single biggest driver of productivity.
I bet I haven’t even explored many other tips and techniques, but I will update findings as I go.
Disadvantages
Working with an editor made for programming comes with some disadvantages, some that might be deal-breakers if you are not willing to make changes. Here are three that come to mind. None of these proved to be deal-breakers for me.
- Not designed by default for writing. Unlike Scrivener, Atticus, Google Docs, Bear, or Ulysses, there are no built-in presets or features that are specific for writers (like exporting to multiple formats, separate note-taking, formatting, chapter organization, etc.). But personally, I ended up not using those features much, and their value diminished.
- No mobile support — There is no Visual Studio Code for iPad, Android, or iOS. You’ll need to find some other Markdown text editor (I use iaWriter on my iPad) that can connect to your Cloud account to edit the files. Perhaps this will come someday. VS Code can be accessed in the Cloud if you put your files in Github, but that may be a little too technical for many. Since the files are simple text files, it’s easy to modify them anywhere.
- No in-built document formatter — e.g., bold, italics, etc. You write in text, but you can use Markdown to get most of those features. Markdown is really simple! (Some of the themes in VS Code, like Horizon, do a pretty good job of coloring the text based on the formatting — like bold and italics, and it’s good enough). See the Screenshot below. This entire blog post was written in Markdown!
**Bold text** and _this is italic_.
> Blockquote for epigraphs
- bullet point 1
- bullet point 2
- bullet point 3
How I Organize My Work in Visual Studio Code
Nothing complicated at all, really.
The critical thing about my setup is I write using Markdown. This is a simple text format, really easy to learn, and you can then transform the text into many other outputs, including Word and ePub.
My setup is very simple:
manuscripts/
the.last.pharaoh.regent.md
the.last.pharaoh.queen.md
the.last.pharaoh.empress.md
resources/
tlp.map.png
tlp.cover.png
Proofreading and Grammar Work
Since your work is just a text file, you can paste it to any grammar editor or AI checkers as a precursor to sending it to an editor or human proofreader.
The idea is that you do 90% of your book writing on VS and then do the final processing and formatting in whatever tool you want. You have to do that with pretty much any writing tool anyway; none of them get you to 100% readiness right away.
Post Processing
The benefit of writing in simple text using Markdown is that’s it easy to do all kinds of post-processing as your manuscript is a simple text file! I use something called QuillDrop to convert my Markdown to a Word document ready for KDP. This is my homegrown creation I’ve used as a script on my computer for years, and I’ve now made it available for anyone to use. Try it here. All my novels have been generated for upload on Amazon KDP using this technique.
I run a script that computes chapters, words, compares to my previous run to show my progress etc. Here’s a recent output showing the title of my book, words, paragraphs, characters, and chapters!
Scripts git:(master) âś— ./stats.sh ../Thrillers/the.reclaimer.md
2025-02-07 21:48 Fri the.reclaimer.md 54573 3802 315885 55
2025-02-08 19:02 Sat the.reclaimer.md 57084 3946 330420 55
2025-02-11 19:39 Tue the.reclaimer.md 57740 3965 334119 55
+656 words since last
My Process
Write in VS Code using Markdown -> Produce Docx through QuillDrop in seconds -> Minor tweaks to the Docx -> Ready for proofreading and final release
What Next?
If you want to follow my method, here are three things you need:
- Learn Markdown in 10 minutes.
- Go grab MS Visual Studio Code for free.
- (Optional) Any tool to convert the Markdown to Word (for example). I use QuillDrop that does a whole lot more.
I hope that helps, give it a try!
All the books on my homepage have been written with the above techniques.

Jay Penner's highly-rated books regularly feature Amazon's category bestseller lists. Try his Spartacus, Cleopatra, Whispers of Atlantis or Dark Shadows books. Reach out to him or subscribe to his popular newsletter.
learn more →