├── .gitattributes ├── README.md ├── steep.svg └── writing.vimrc /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # writing vim 2 | 3 | An awesome-ish list of vim for writers. Geared towards beginners, 4 | but hopefully useful for others too. 5 | 6 | 1. [why](#why) 7 | 2. [getting started](#getting-started) 8 | 3. [writing with vim](#writing-with-vim) 9 | 4. [a note on markup languages](#a-note-on-markup-languages) 10 | 5. [plugins for writing](#plugins-for-writing) 11 | 6. [colorschemes](#colorschemes) 12 | 7. [general vim resources](#general-vim-resources) 13 | 8. [other resources](#other-resources) 14 | 9. [contributing](#contributing) 15 | 16 | **Note:** 17 | - :+1: excellent 18 | - :eyes: new 19 | 20 | ## why 21 | 22 | **So... why use a text editor for writing over a word processor like 23 | Microsoft Word, Apple Pages or Google Docs?** 24 | 25 | Well, many reasons, but the most important/obvious are: 26 | 27 | - The separation of [text and styling](https://en.m.wikipedia.org/wiki/Separation_of_content_and_presentation) 28 | and the productivity boost that comes with that—essentially they force you to 29 | focus on the text instead of faffing about with fonts and headings. 30 | - They use an open, non-proprietary, plain text file format, meaning you can 31 | rely on your files being usable fifty years from now. 32 | - Text editors are faster, lighter, and appear less prone to bugs and/or 33 | crashes. 34 | 35 | **You could say the same thing about Notepad, why use vim?** 36 | 37 | Yes, and if you want to use Notepad or TextEdit or the like, you should. 38 | Whatever is most comfortable for you. But with vim, the positives of 39 | plain text files also apply to the editor itself. It’s reliable, tested, 40 | lightweight and cross platform—it’s available across all operating systems 41 | including iOS and Android—and your can use the same config across all your 42 | devices. More than that though is the powerful and unrivalled editing 43 | language (described in detail in some of the links below) that strives to 44 | increase editing effects. Add to that the deep customisability and you can 45 | shape vim into a productive and personal tool. 46 | 47 | ![steep](steep.svg) 48 | 49 | The elephant in the room is Vim’s steep learning curve. And yeah there is 50 | no getting around that. But for prose that curve is 51 | steep but not high, a two or three runs through vimtutor, the first step 52 | on the vim highway, and reading some of the links in *general vim*, is 53 | enough to start. 54 | Anyway, I recommend at least reading both [Coming home 55 | to vim](https://stevelosh.com/blog/2010/09/coming-home-to-vim) and 56 | [Everyone Who Tried to Convince Me to use Vim was 57 | Wrong](https://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/) 58 | before deciding in vim is for you. 59 | 60 | ## getting started 61 | 62 | The below links show vim can be a powerful and flexible editor of prose, 63 | with near endless configuration options. Perhaps too many options. But you 64 | don’t need to learn it all at once, especially if your focus is 65 | writing prose. Here’s a some simple steps to get started: 66 | 67 | Install the GUI version. Either gVim or MacVim. Vim has different 68 | shortcuts to other editors, you’ll want the menus as backup when starting 69 | out. 70 | 71 | Bookmark a quality cheat-sheet and the official documentation. You can 72 | access the docs with `:h ` but I find the online copy is easier to browse. 73 | Check the links below. 74 | 75 | As we have seen, one of the main benefits of vim is its configurability. 76 | But again, for prose, there’s only a few settings you need. For convenience 77 | you can download a super minimal vimrc here: 78 | 79 | [minimal vimrc for writing](writing.vimrc) 80 | 81 | This will set up backspacing and word wrapping to work as you would expect 82 | in traditional editors. 83 | 84 | ALSO use the mouse if you want! 85 | 86 | ## writing with vim 87 | 88 | Here is collection of links on using vim for prose. The criteria for this 89 | section is that I think the link is *interesting* (with the usual 90 | disclaimer that I do not necessarily endorse the opinions expressed or 91 | their authors). 92 | 93 | - [3 shell scripts: Kill weasel words, avoid the passive, remove duplicates](https://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/) - Matt Might :eyes: 94 | - [Configuring Vim as a Writing Tool](https://news.itsfoss.com/configuring-vim-writing/) - Its FOSS 95 | - [English Words Completion inside Neovim/Vim](https://jdhao.github.io/2019/04/26/words_completion_nvim/) - jdhao 96 | - [How I'm writing my book using Vim, Git and Ruby](http://blog.chrismdp.com/2010/11/how-im-writing-my-book-using-git-and-ruby/) - Chris Parsons 97 | - [Real-time LaTeX using Vim/Neovim, VimTeX, and snippets](https://ejmastnak.github.io/tutorials/vim-latex/intro.html) - ejmastnak 98 | - [The Woodnotes Guide to Vim for Writers](https://therandymon.com/woodnotes/vim-for-writers/vimforwriters.html) 99 | - [Using Vim for writing Prose](http://www.terminally-incoherent.com/blog/2013/06/17/using-vim-for-writing-prose/) - terminally incoherent 100 | - [Vim for Writers](https://www.naperwrimo.org/wiki/index.php?title=Vim_for_Writers) - NaperWriMo Wiki 101 | - [Vim for Writing](https://raivivek.in/2016/09/vim-for-writing/#) - Vivek 102 | - [WRITING PROSE IN VIM](http://ultralight.cc/posts/71ab285a0c633f47.html) - ultralight 103 | - [Writing Markdown in Vim](https://codeinthehole.com/tips/writing-markdown-in-vim/) - David Winterbottom 104 | - [Writing a Book with Pandoc, Make, and Vim](https://keleshev.com/my-book-writing-setup/) - Vladimir Keleshev 105 | - [Writing with Vim](https://jamierubin.net/2019/03/21/writing-with-vim/) - Jamie Todd Rubin 106 | - [Writing, Editing and World-Building at the speed of thought with Vim](https://www.youtube.com/watch?v=2ORWaIqyj7k) - Theena Kumaragurunathan 107 | - [You (probably) don’t need Vimwiki](http://joereynoldsaudio.com/2018/07/07/you-dont-need-vimwiki.html) - Joe Reynolds 108 | - [take notes using LaTeX and Vim](https://castel.dev/post/lecture-notes-1) - Gilles Castel 109 | - [using vim to write prose](https://n3wjack.net/2022/02/07/using-vim-to-write-prose/) - n3wjack 110 | - [writing prose in vim](https://jonathanh.co.uk/blog/writing-prose-in-vim/) - Jonathan Hodgson 111 | - [Self-publishing a book with reStructuredText, Sphinx, Calibre, and vim](https://digitalsuperpowers.com/blog/2019-02-16-publishing-ebook.html) Nick Touran :eyes: 112 | 113 | 114 | ## a note on markup languages 115 | 116 | While not essential, when writing in plain text you may want to markup your 117 | er... text to show emphasis and the like. You’ve heard of 118 | [Markdown](https://daringfireball.net/projects/markdown/) but 119 | there’s many markup languages to choose from: 120 | 121 | - [AsciiDoc](https://asciidoc.org/) is both older and a bit more complex than Markdown. It does have some nice features of its own. 122 | - [Commonmark](https://commonmark.org/). With so many flavours of Markdown, I suggest using commonmark to avoid confusion. 123 | - [Djot](https://djot.net/) is a new attempt at refining Markdown. 124 | - [Fountain](https://fountain.io/) is a markup language for writing screenplays. 125 | - [LaTex](https://en.wikipedia.org/wiki/LaTeX) is the grandma of markup languages. Big and intimidating. Used in academia. A little beyond the scope for us. 126 | - [Typst](https://github.com/typst/typst) Typst is a new markup-based typesetting system designed to be “as powerful as LaTeX while being much easier to learn and use” 127 | - [txt2tags](https://txt2tags.org/) super minimal markup language 128 | - [reStructuredText](https://docutils.sourceforge.io/rst.html) perhaps markdown’s main rival 129 | 130 | ## plugins for writing 131 | 132 | Vanilla Vim is more than capable. You can, of course, to customise it to 133 | make it fit better into your workflow. Check the documentation for options 134 | you may want to enable, and then check out Vim’s plugin ecosystem. 135 | This second step is optional. 136 | 137 | For information on installing plugins see this [video](http://vimcasts.org/episodes/packages/) 138 | 139 | - [abolish](https://github.com/tpope/vim-abolish). Fancy find and replace :+1: 140 | - [ditto](https://github.com/dbmrq/vim-ditto). Stop repeating yourself. 141 | - [fountain4vim](https://github.com/stevenjaycohen/fountain4vim) is a modern plugin for working with Fountain markup 142 | - [goyo](https://github.com/junegunn/goyo.vim). Distraction-free writing in Vim. Also [limelight](https://github.com/junegunn/limelight.vim) by the same author 143 | - [gundo](https://github.com/sjl/gundo.vim). Visual undo tree 144 | - [litecorrect](https://github.com/preservim/vim-litecorrect) is a small autocorrect plugin for the ~400 most common typos 145 | - [nrrwrgn](https://github.com/chrisbra/NrrwRgn). Focus on small region of text 146 | - [org.vim](https://github.com/axvr/org.vim). Org mode syntax highlighting and folding for Vim 147 | - [targets.vim](https://github.com/wellle/targets.vim). Vim plugin that provides extra text objects 148 | - [vim-exchange](https://github.com/tommcdo/vim-exchange). Swap words when they’re in the order wrong. Vimcasts has a [tutorial](http://vimcasts.org/episodes/swapping-two-regions-of-text-with-exchange-vim/) :+1: 149 | - [vim-fountain ](https://github.com/kblin/vim-fountain) Plug-in for writing screenplays in Fountain markup (disclosure: I have contributed to this) 150 | - [vim-lengthy](https://github.com/Raimondi/vim-lengthy). Colorize sentences by word count 151 | - [vim-lexical](https://github.com/preservim/vim-lexical). Build on Vim’s spell/thes/dict completion 152 | - [vim-markdown-toc](https://github.com/ajorgensen/vim-markdown-toc). An easy way to generate a table of contents for your markdown file 153 | - [vim-online-thesaurus](https://github.com/beloglazov/vim-online-thesaurus). Thesaurus look up 154 | - [vim-pandoc](https://github.com/vim-pandoc/vim-pandoc). Pandoc integration and utilities for vim 155 | - [vim-pencil](https://github.com/preservim/vim-pencil). Rethinking Vim as a tool for writing 156 | - [vim-textobj-quote](https://github.com/preservim/vim-textobj-quote). Use ‘curly’ quote characters in Vim 157 | - [vim-textobj-sentence](https://github.com/preservim/vim-textobj-sentence). Improving on Vim's native sentence text object and motion 158 | - [vim-wordchipper](https://github.com/preservim/vim-wordchipper). Power tool for shredding text in Insert mode 159 | - [vim-wordy](https://github.com/preservim/vim-wordy). Uncover usage problems in your writing 160 | - [vimtex](https://github.com/lervag/vimtex). A modern Vim and neovim filetype plugin for LaTeX files 161 | - [vimwiki](https://github.com/vimwiki/vimwiki). Personal Wiki for Vim 162 | - [visual-split.vim](https://github.com/wellle/visual-split.vim). Vim plugin to control splits with visual selections or text objects 163 | - [writegood](https://github.com/davidbeckingsale/writegood.vim). Highlight ‘weasel words’ etc 164 | - [focus.vim](https://github.com/merlinrebrovic/focus.vim) Make a split temporarily full screen 165 | 166 | ## colorschemes 167 | 168 | Thousands of colorschemes are available for vim, but 169 | most are for dark mode (which I find less suited for long-form 170 | writing). Here are some good light themes: 171 | 172 | - [Lucius](https://github.com/jonathanfilip/vim-lucius) 173 | - [Pencil](https://github.com/preservim/vim-colors-pencil) 174 | - [Solarized8](https://github.com/lifepillar/vim-solarized8) 175 | - [Paramount](https://github.com/owickstrom/vim-colors-paramount) 176 | - [Paige](https://sr.ht/~leon_plickat/Paige/) 177 | - [Bruin](https://git.sr.ht/~romainl/vim-bruin) 178 | - [vim-paper](https://github.com/yorickpeterse/vim-paper) :eyes: 179 | - [vim-no-color-collection](https://github.com/mcchrish/vim-no-color-collections) Collection of Vim themes with barely any colors 180 | 181 | ## general vim resources 182 | 183 | - [A Vim Cheatsheet](https://learnxinyminutes.com/docs/vim/) 184 | - [And another one](https://vim.rtorr.com/) 185 | - [Idiomatic Vimrc: Advice on writing your own config](https://github.com/romainl/idiomatic-vimrc) - romainl 186 | - [Learn Vimscript the Hard Way](https://learnvimscriptthehardway.stevelosh.com/) - Steve Losh :+1: 187 | - [Let Vim do the typing](https://georgebrock.github.io/talks/vim-completion/) 188 | - [My vim config](https://github.com/phantomdiorama/vimfiles). You shouldn’t copy it. Check out the above instead. 189 | - [Practical Vim](https://www.amazon.com/Practical-Vim-Edit-Speed-Thought/dp/1680501275) - Drew Neil :+1: 190 | - [Recommendations from #vim](https://www.vi-improved.org/recommendations/) 191 | - [Seven habits of effective text editing](https://www.moolenaar.net/habits.html) - Bram Moolenaar 192 | - [The Documentation](http://vimdoc.sourceforge.net/htmldoc/help.html) 193 | - [Vimcasts](http://vimcasts.org/) - Drew Neil :+1: 194 | - [vim galore](https://github.com/mhinz/vim-galore) 195 | 196 | ## other resources 197 | 198 | The *if you liked that you'll like this* section: 199 | 200 | - [Using Git Version Control as a Writer](https://news.itsfoss.com/version-control-writers/) 201 | - [Write plain text files](https://sive.rs/plaintext) 202 | - [Vale: enforcing style guidelines for text](https://lwn.net/Articles/964075/) 203 | - [Improve your writing with the GNU style checkers](https://www.linux.com/news/improve-your-writing-gnu-style-checkers/) :eyes: 204 | - [Exploring Typst, a new typesetting system](https://blog.jreyesr.com/posts/typst/) :eyes: 205 | 206 | ## contributing 207 | 208 | Suggestions are welcome! Please create an issue. 209 | -------------------------------------------------------------------------------- /steep.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | Snow Mountain Minimal by Monster Brain 21 | 23 | 27 | 28 | 53 | 55 | 56 | 58 | image/svg+xml 59 | 61 | Snow Mountain Minimal by Monster Brain 62 | 63 | 64 | 65 | 70 | 75 | 81 | 86 | 92 | 97 | 102 | 107 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /writing.vimrc: -------------------------------------------------------------------------------- 1 | " minimal writing vimrc 2 | " 12 October 2022 3 | filetype plugin indent on 4 | syntax on 5 | 6 | set backspace=indent,eol,start " backspace like you would expect 7 | set wrap " use word wrapping 8 | set linebreak " wrap at word bounds 9 | set nolist " do not show whitespace characters 10 | 11 | " make j and k move over visual lines 12 | nnoremap j gj 13 | nnoremap k gk 14 | --------------------------------------------------------------------------------