/UberSelection

Commands to extend the functionality of Sublime Text's multiselection.

Primary LanguagePython

Uberselection

Make complex selections and replace text in a buffer via textual commands. Inspired in Vim's line-oriented ex mode.

Getting Started

If you're running a full installation, simply doubleclick on the .sublime-package files. If you're running a portable installation, perform an installation by hand.

Usage

  1. Run from Sublime's console with view.run_command("uber_selection")
  2. Issue command as explained further below

Examples

10,20V/this/
Select lines containing this between lines 10 and 20 (inclusive).
.,.+20-V/this/
Select lines not containing this from the current line to 20 lines down from it.
%s/this/that/
Replace this with that in the whole file.

Four Ways of Issuing Commands

  1. <SUBLIME COMMAND>[ <ARG>]
  2. <LINE REF>[,<LINE REF>]
  3. <BUFFER COMMAND>[;<BUFFER COMMAND>]*
  4. <LINE REF><BUFFER COMMAND>[;<BUFFER COMMAND>]*

All tokens are explained in the following sections

Tokens

Sublime Commands

(Not all commands work.)

w [arg]
Save the active buffer. If you pass an arg to it, the Save As dialog will show up. At the moment, the passed arg is ignored.
wall
Save all opened buffers.
wq
Save the active buffer and exit.
ZZ
Save the active buffer and exit.
ls
Show list of opened views.
e
Show list of files in current directory.
q
Exit.
n
Next view.
N
Previous view.

Line References

Select lines or ranges of lines in the active view.

[1-9]+
Designates line by number.
.
Desigates the current line (first cursor in selection).
$
Designates the last line in the view.
%
Designates all lines in the view.
/what/
Looks forwards to find first line matching what or returns current line if none found.
?what?
Looks backwards to find first line matching what or returns current line if none found.

You can also specify offsets with [+-][1-9]+.

In order to designate a range, use two comma separated line references:

.+5,/end$/-3

Text Commands

Select lines and perform replacements in the view.

V/what/<flags>
Selects all lines containing what. Case insensitive by default. Use the flag c to make a case-sensitive search.
-V/what/<flags>
Same as above, but excludes the lines matching what.
s/what/with/
Replaces all instances of what with with. Case sensitive. The separator / can be substituted by any of: ! $ % & = / : ;

You can chain commands by separating them with a semicolon (;):

.+5,/end$/-3V/foo/;-V/bar/;s/foo/BOO!/