This plugin is meant to simplify a task I've found too common in my workflow: switching between a single-line statement and a multi-line one. It offers the following default keybindings, which can be customized:
gSto split a one-liner into multiple lines
gJ(with the cursor on the first line of a block) to join a block into a single-line statement.
I usually work with ruby and a lot of expressions can be written very concisely on a single line. A good example is the "if" statement:
puts "foo" if bar?
This is a great feature of the language, but when you need to add more statements to the body of the "if", you need to rewrite it:
if bar? puts "foo" puts "baz" end
The idea of this plugin is to introduce a single key binding (default:
gS) for transforming a
line like this:
<div id="foo"> bar </div>
And another binding (default:
gJ) for the opposite transformation.
This currently works for:
- Various constructs in Ruby and Eruby
- Various constructs in Coffeescript
- Various constructs in Perl
- Various constructs in Python
- PHP arrays
- Tags in HTML/XML
- Handlebars components
- CSS, SCSS, LESS style declarations.
- YAML arrays and maps
- Lua functions and tables
- Go structs
- Vimscript line continuations
- TeX blocks
- C if clauses and function calls
- Do-blocks in Elixir
For more information, try
:help splitjoin, or take a look at the help file
For more examples and corner cases, you can explore the "examples" directory here: examples. It's not present in the downloadable zip file to avoid cluttering your vimfiles with useless stuff.
If you'd like to hack on the plugin, please see CONTRIBUTING.md first.
Any issues and suggestions are very welcome on the github bugtracker.