I've started using vim for things besides programming, (taking notes, etc.) but something I haven't been able to replace final draft with vim yet just because there are so many things I need, so I was looking to see if any of you had taken a stab at this issue.Just to give you an idea of the features I am looking for: auto indention, different modes for different things like dialogue, character names, etc, changing my font to courier for specific. Another thing I'd like that I don't have in final draft is custom auto completion for commonly used words, names, and phrases. If something like this doesn't exist if you guys knew of any implementations of the features described above or resources to help me figure out how to implement them myself that would also be helpful. Also I use neovim if that matters.

  • 2
    Do you know about Fountain? fountain.io It's a plain-text markup language for screenplays. I don't know if it would be usable or useful for playwriting or not, but it might be worth a look. There's a vim syntax plugin for Fountain files too: vim.org/scripts/script.php?script_id=3880 – Nick Weinberg Nov 3 '16 at 1:22
  • I have a similar issue and I solved it using Latex. With minimal markup you get your text nicely formatted in a neat pdf and with some effort you can make your own commands to speed up writing for oft recurring situation (start a new act, open dialog etc.) I would put It as an answer if the question were reopened, illustrating why latex + vim make a great combo. This seems a sensible question for this site and I don't see it as too broad – Three Diag Nov 5 '16 at 13:09

I think you could create your own filetype (.play?) and define custom indent and syntax for it. See :help filetype, :help indent and :help syntax. You can also read the Steve Losh book "Learn Vimscript the Hard Way". It has some chapters on Vim filetypes.

Vim and Neovim inherit the font family and size from your terminal but you can use bold, italics and two types of underline.

The ins-completion feature provides dictionary completion. You can add k{dict} to your $MYVIMRC file like so:

set complete=ken,kes

And now, when you press Ctrl+N in insertion mode a pop-up with words from English and Spanish will appear.

See :help 'complete' for more details.

Now if you are using Neovim I recomend you to try deoplete, an asynchronous auto-completion engine. It provides dictionary completion among others an you can write your own sources. So, for dictionary completion you could declare something like:

let g:deoplete#sources={
  \ 'play': ['dictionary']
  \ }

Not the answer you're looking for? Browse other questions tagged or ask your own question.