sponsor Vim development Vim logo Vim Book Ad

Pago : Powerful Screenplay Formatting

 script karma  Rating 104/39, Downloaded by 3752  Comments, bugs, improvements  Vim wiki

created by
Mike Zazaian
script type
Pago is probably the most powerful terminal-based screenwriting script available for any platform, and allows the use of vim as a fully-functional piece of screenwriting software such as Final Draft or Celtx.  While some elements of the script are unstable, it undergoes daily testing and revision, becoming more mature as I use it every day for my own screenwriting projects.

PLEASE PROVIDE ME WITH FEEDBACK if you use or test this software -- any comments or requested features will be given full consideration.  (zazaian (at) gmail (dot) com).  Your thoughts are essential to developing this program into a piece of software that best serves the open source community.

* Supports all major formatting elements of a screenplay, based on both logical and commonly accepted conventions of the screenplay form.
* Automatically enforces all boundaries within each screenplay element, ensuring proper formatting to the exact specifications of a screenplay.
* Allows access to all six available screenplay ELEMENTS without any complex keyboard shortcuts or commands, using only the keys <Backspace>, <Tab>, <Enter>, <Up>, <Down>, <Left>, <Right>.
* Allows easy cycling through blank screenplay elements using both the <Tab> and <Backspace> keys.

  * Pressing TAB cycles through empty screenplay elements in the order:


    * Pressing <Tab> from a blank TRANSITION element will cycle back to the
      beginning of the line, triggering a blank ACTION element.

    * Parentheses are automatically inserted when calling a blank PARENTHETICAL
      element.  Pressing <Tab> from within blank parentheses will automatically
      delete the parentheses and jump to a blank CHARACTER element.

    * A colon (":") is automatically inserted at the end of the line when an
      TRANSITION element is called.  The cursor remains at the spot of the colon
      when text is either entered or deleted.
      * Text typed within a TRANSITION element is automatically RIGHT-JUSTIFIED.

      * Pressing <Enter> from a TRANSITION element jumps two lines down the page
        and prompts a blank SCENE HEADING element.

  * Pressing <Backspace> on an empty line cycles through empty screenplay elements
    in the reverse order:


    * Pressing <Backspace> from a blank line jumps to the end of the previous
      element or, if the above two lines are blank, will create a blank ACTION
      element two lines above the previous cursorline.
    * Pressing <Backspace> on a line with text will delete the character to the
      left of the cursor.

  * All text typed with a SCENE HEADING, CHARACTER, or TRANSITION element will be
    automatically CAPITALIZED.

  * To create a SCENE HEADING element, press enter while in a blank ACTION element.
    The Cursorline will be HIGHLIGHTED and all text typed within the element will

  * While in a blank SCENE HEADING element:
    * Press the <Space> bar to cycle through the common prefixes INT., EXT., and
    * Press <Enter> to jump down two lines to a new, blank ACTION element.

  * Active screenplay element is displayed in CAPS in the status bar.

  * Page number is displayed in the status bar.  This estimates the number of pages
    within your screeplay using a 56-line-per-page standard.

  * Pressing <Up> in either INSERT or NORMAL modes jumps to the beginning of the
    line above the cursorline.

  * Pressing <Down> in either INSERT or NORMAL modes jumps to the end of the
    line above the cursorline.

  * Holding <Left> in either INSERT or NORMAL modes scrolls through to the
    beginning of the current element, then jumps to the end of the previous

  * Holding <Right> in either INSERT or NORMAL modes scrolls through to the
    end of the current element, then jumps to the beginning of the next

  * Typing text within a screenplay element such as DIALOGUE or ACTION will
    automatically reformat the paragraph if text exceeds the preset end of the
    line.  This improves upon use of the :tw (text width) and :wrap commands by
    formatting text that is typed within a paragraph, rather than simply at the end
    of it.

Planned Features
* Easily output text file to a fully-formatted .PDF file.
* Drop-Down lists for previously used:
  * Character Names
  * Character Parentheticals (O.S., O.C., V.O., CONT'D)
  * Scene Headings
* Integrated version control using the Bazaar version control system.
  * Allows the use of a single file for a screenplay, rather than keeping multiple copies.
  * Easily discern the differences between various writing sessions.
  * Retain deleted scenes, lines and actions from various writing sessions.
* Command-line abbreviations will simplify both version control and other useful features.
* Optional syntax highlighting
* Character and scene reports
install details
* Drop this file in your ${VIMRUNTIME}/ftplugin/ directory, which is likely located at ~/.vim/ftplugin/

* add the following lines to your ~/.vimrc file:
  :filetype on
  :filetype plugin on
  :au BufRead,BufNewFile *.pago    set filetype=pago

* Ensure the suffix the file you are editing is .pago.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
pago.vim 0.2.31 2009-01-13 7.0 Mike Zazaian * Completed function wherein pressing Enter from a dialogue element creates a parenthetical
    on the next line.  If it is left empty, pressing enter again deletes the empty brackets and
    creates a new character element two lines down.
pago.vim 0.2.29 2009-01-11 6.0 Mike Zazaian Fixed a number of bus related to auto-formatting.
pago.vim 0.2.25 2008-11-25 7.0 Mike Zazaian * Temporarily reverted to the gw}a style of paragraph formatting while the more elaborate formatting function is being tested and developed further.
pago.vim 0.2.24 2008-11-25 7.0 Mike Zazaian * Adjusted new auto-formatting function to accommodate backspacing.
pago.vim 0.2.23 2008-11-25 7.0 Mike Zazaian * Marked improvements in the auto-formatting function, using a filter of the fmt unix command.
pago.vim 0.2.22 2008-11-24 7.0 Mike Zazaian * Status bar is activated on script initialization.
pago.vim 0.2.21 2008-11-24 7.0 Mike Zazaian * Fixed small bug from version 0.2.19 that effected formatting of PARENTHETICAL elements.
pago.vim 0.2.20 2008-11-24 7.0 Mike Zazaian * <PageUp> and <PageDown> keys now detect the screenplay elements they land on as per the other direction and navigation keys.
pago.vim 0.2.19 2008-11-24 7.0 Mike Zazaian * Fixed bug that affected automatic formatting of PARENTHETICAL elements.
pago.vim 0.2.18 2008-11-23 7.0 Mike Zazaian * Empty files now start properly indented on an ACTION element.
pago.vim 0.2.17 2008-11-23 7.0 Mike Zazaian * Fixed major bug of auto-formatting functionality that considered all ELEMENTS not seperated by a black line to be the same paragraph.  Consequently, PARENTHETICAL elements would be formatted into a DIALOGUE element if dialogue was added above or below the PARENTHETICAL element.
pago.vim 0.2.16 2008-11-22 7.0 Mike Zazaian * Fixed bug in which current screenplay ELEMENT isn't established on script init.
pago.vim 0.2.15 2008-11-21 7.0 Mike Zazaian * Fixed issues with <Space> bar not shifting text to the left when used within the TRANSITION element.
* Fixed issues with <Backspace> deleting all text when used within the TRANSITION element.
pago.vim 0.2.14 2008-11-21 7.0 Mike Zazaian Fixed bug: pressing backspace from the beginning of an action line containing text now brings the text from that line to the previous line and automatically formats the ACTION element.  This action would previously backspace the text beyond the 10-space padding for ACTION elements.
pago.vim 0.2.13 2008-11-18 7.2 Mike Zazaian Initial upload
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.