Learn Vimscript the Hard Way
Learn Vimscript the Hard Way
$8.00
Minimum price
$8.00
Suggested price
Learn Vimscript the Hard Way

Last updated on 2013-04-04

About the Book

LVSTHW is a book about customizing the Vim editor. It's freely available online, but you can buy an ebook copy here.

About the Author

Steve Losh
Steve Losh

Steve Losh is a programmer, photographer, dancer, and bassist from Rochester, New York.

He's the author of a number of Vim plugins and color schemes such as Gundo, Splice, Vitality, Bad Wolf, and Clam.

Table of Contents

  • Preface
  • Acknowledgements
  • Prerequisites
  • Creating a Vimrc File
  • 1 Echoing Messages
  • 1.1 Persistent Echoing
  • 1.2 Comments
  • 1.3 Exercises
  • 2 Setting Options
  • 2.1 Boolean Options
  • 2.2 Toggling Boolean Options
  • 2.3 Checking Options
  • 2.4 Options with Values
  • 2.5 Setting Multiple Options at Once
  • 2.6 Exercises
  • 3 Basic Mapping
  • 3.1 Special Characters
  • 3.2 Commenting
  • 3.3 Exercises
  • 4 Modal Mapping
  • 4.1 Muscle Memory
  • 4.2 Insert Mode
  • 4.3 Exercises
  • 5 Strict Mapping
  • 5.1 Recursion
  • 5.2 Side Effects
  • 5.3 Nonrecursive Mapping
  • 5.4 Exercises
  • 6 Leaders
  • 6.1 Mapping Key Sequences
  • 6.2 Leader
  • 6.3 Local Leader
  • 6.4 Exercises
  • 7 Editing Your Vimrc
  • 7.1 Editing Mapping
  • 7.2 Sourcing Mapping
  • 7.3 Exercises
  • 8 Abbreviations
  • 8.1 Keyword Characters
  • 8.2 More Abbreviations
  • 8.3 Why Not Use Mappings?
  • 8.4 Exercises
  • 9 More Mappings
  • 9.1 A More Complicated Mapping
  • 9.2 Exercises
  • 10 Training Your Fingers
  • 10.1 Learning the Map
  • 10.2 Exercises
  • 11 Buffer-Local Options and Mappings
  • 11.1 Mappings
  • 11.2 Local Leader
  • 11.3 Settings
  • 11.4 Shadowing
  • 11.5 Exercises
  • 12 Autocommands
  • 12.1 Autocommand Structure
  • 12.2 Another Example
  • 12.3 Multiple Events
  • 12.4 FileType Events
  • 12.5 Exercises
  • 13 Buffer-Local Abbreviations
  • 13.1 Autocommands and Abbreviations
  • 13.2 Exercises
  • 14 Autocommand Groups
  • 14.1 The Problem
  • 14.2 Grouping Autocommands
  • 14.3 Clearing Groups
  • 14.4 Using Autocommands in Your Vimrc
  • 14.5 Exercises
  • 15 Operator-Pending Mappings
  • 15.1 Movement Mappings
  • 15.2 Changing the Start
  • 15.3 General Rules
  • 15.4 Exercises
  • 16 More Operator-Pending Mappings
  • 16.1 Normal
  • 16.2 Execute
  • 16.3 Results
  • 16.4 Exercises
  • 17 Status Lines
  • 17.1 Width and Padding
  • 17.2 General Format
  • 17.3 Splitting
  • 17.4 Exercises
  • 18 Responsible Coding
  • 18.1 Commenting
  • 18.2 Grouping
  • 18.3 Short Names
  • 18.4 Exercises
  • 19 Variables
  • 19.1 Options as Variables
  • 19.2 Local Options
  • 19.3 Registers as Variables
  • 19.4 Exercises
  • 20 Variable Scoping
  • 20.1 Exercises
  • 21 Conditionals
  • 21.1 Multiple-Line Statements
  • 21.2 Basic If
  • 21.3 Else and Elseif
  • 21.4 Exercises
  • 22 Comparisons
  • 22.1 Case Sensitivity
  • 22.2 Code Defensively
  • 22.3 Exercises
  • 23 Functions
  • 23.1 Calling Functions
  • 23.2 Implicit Returning
  • 23.3 Exercises
  • 24 Function Arguments
  • 24.1 Varargs
  • 24.2 Assignment
  • 24.3 Exercises
  • 25 Numbers
  • 25.1 Number Formats
  • 25.2 Float Formats
  • 25.3 Coercion
  • 25.4 Division
  • 25.5 Exercises
  • 26 Strings
  • 26.1 Concatenation
  • 26.2 Special Characters
  • 26.3 Literal Strings
  • 26.4 Truthiness
  • 26.5 Exercises
  • 27 String Functions
  • 27.1 Length
  • 27.2 Splitting
  • 27.3 Joining
  • 27.4 Lower and Upper Case
  • 27.5 Exercises
  • 28 Execute
  • 28.1 Basic Execution
  • 28.2 Is Execute Dangerous?
  • 28.3 Exercises
  • 29 Normal
  • 29.1 Avoiding Mappings
  • 29.2 Special Characters
  • 29.3 Exercises
  • 29.4 Extra Credit
  • 30 Execute Normal!
  • 30.1 Exercises
  • 31 Basic Regular Expressions
  • 31.1 Highlighting
  • 31.2 Searching
  • 31.3 Magic
  • 31.4 Literal Strings
  • 31.5 Very Magic
  • 31.6 Exercises
  • 32 Case Study: Grep Operator, Part One
  • 32.1 Grep
  • 32.2 Usage
  • 32.3 A Preliminary Sketch
  • 32.4 The Search Term
  • 32.5 Escaping Shell Command Arguments
  • 32.6 Cleanup
  • 32.7 Exercises
  • 33 Case Study: Grep Operator, Part Two
  • 33.1 Create a File
  • 33.2 Skeleton
  • 33.3 Visual Mode
  • 33.4 Motion Types
  • 33.5 Copying the Text
  • 33.6 Escaping the Search Term
  • 33.7 Running Grep
  • 33.8 Exercises
  • 34 Case Study: Grep Operator, Part Three
  • 34.1 Saving Registers
  • 34.2 Namespacing
  • 34.3 Exercises
  • 35 Lists
  • 35.1 Indexing
  • 35.2 Slicing
  • 35.3 Concatenation
  • 35.4 List Functions
  • 35.5 Exercises
  • 36 Looping
  • 36.1 For Loops
  • 36.2 While Loops
  • 36.3 Exercises
  • 37 Dictionaries
  • 37.1 Indexing
  • 37.2 Assigning and Adding
  • 37.3 Removing Entries
  • 37.4 Dictionary Functions
  • 37.5 Exercises
  • 38 Toggling
  • 38.1 Toggling Options
  • 38.2 Toggling Other Things
  • 38.3 Improvements
  • 38.4 Restoring Windows/Buffers
  • 38.5 Exercises
  • 39 Functional Programming
  • 39.1 Immutable Data Structures
  • 39.2 Functions as Variables
  • 39.3 Higher-Order Functions
  • 39.4 Performance
  • 39.5 Exercises
  • 40 Paths
  • 40.1 Absolute Paths
  • 40.2 Listing Files
  • 40.3 Exercises
  • 41 Creating a Full Plugin
  • 41.1 Potion
  • 41.2 Exercises
  • 42 Plugin Layout in the Dark Ages
  • 42.1 Basic Layout
  • 42.2 ~/.vim/colors/
  • 42.3 ~/.vim/plugin/
  • 42.4 ~/.vim/ftdetect/
  • 42.5 ~/.vim/ftplugin/
  • 42.6 ~/.vim/indent/
  • 42.7 ~/.vim/compiler/
  • 42.8 ~/.vim/after/
  • 42.9 ~/.vim/autoload/
  • 42.10 ~/.vim/doc/
  • 42.11 Exercises
  • 43 A New Hope: Plugin Layout with Pathogen
  • 43.1 Runtimepath
  • 43.2 Pathogen
  • 43.3 Being Pathogen-Compatible
  • 43.4 Exercises
  • 44 Detecting Filetypes
  • 44.1 Detecting Potion Files
  • 44.2 Exercises
  • 45 Basic Syntax Highlighting
  • 45.1 Highlighting Keywords
  • 45.2 Highlighting Functions
  • 45.3 Exercises
  • 46 Advanced Syntax Highlighting
  • 46.1 Highlighting Comments
  • 46.2 Highlighting Operators
  • 46.3 Exercises
  • 47 Even More Advanced Syntax Highlighting
  • 47.1 Highlighting Strings
  • 47.2 Exercises
  • 48 Basic Folding
  • 48.1 Types of Folding
  • 48.2 Potion Folding
  • 48.3 Exercises
  • 49 Advanced Folding
  • 49.1 Folding Theory
  • 49.2 First: Make a Plan
  • 49.3 Getting Started
  • 49.4 Expr Folding
  • 49.5 Blank Lines
  • 49.6 Special Foldlevels
  • 49.7 An Indentation Level Helper
  • 49.8 One More Helper
  • 49.9 Finishing the Fold Function
  • 49.10 Review
  • 49.11 Exercises
  • 50 Section Movement Theory
  • 50.1 Nroff Files
  • 50.2 Braces
  • 50.3 Exercises
  • 51 Potion Section Movement
  • 51.1 Custom Mappings
  • 51.2 Using a Function
  • 51.3 Base Movement
  • 51.4 Top Level Text Sections
  • 51.5 Search Flags
  • 51.6 Function Definitions
  • 51.7 Visual Mode
  • 51.8 Why Bother?
  • 51.9 Exercises
  • 52 External Commands
  • 52.1 Compiling
  • 52.2 Bang!
  • 52.3 Displaying Bytecode
  • 52.4 system()
  • 52.5 Scratch Splits
  • 52.6 Exercises
  • 52.7 Extra Credit
  • 52.8 More Extra Credit
  • 53 Autoloading
  • 53.1 How Autoload Works
  • 53.2 Experimenting
  • 53.3 What to Autoload
  • 53.4 Adding Autoloading to the Potion Plugin
  • 53.5 Exercises
  • 54 Documentation
  • 54.1 How Documentation Works
  • 54.2 Help Header
  • 54.3 What to Document
  • 54.4 Table of Contents
  • 54.5 Sections
  • 54.6 Examples
  • 54.7 Write!
  • 54.8 Exercises
  • 55 Distribution
  • 55.1 Hosting
  • 55.2 Documentation
  • 55.3 Publicity
  • 55.4 Exercises
  • 56 What Now?
  • 56.1 Color Schemes
  • 56.2 The Command Command
  • 56.3 runtimepath
  • 56.4 Omnicomplete
  • 56.5 Compiler Support
  • 56.6 Other Languages
  • 56.7 Vim’s Documentation
  • 56.8 Exercises

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors, publishers and universities use Leanpub to publish amazing in-progress and completed books and courses, just like this one. You can use Leanpub to write, publish and sell your book or course as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub