The most flexible alignment plugin for Sublime Text 2/3. This plugin is inspired by the excellent VIM plugin, tabular.
ST2 support is deprecated but however, it is still possible to install AlignTab on ST2 via Package Control.
- Align using regular expression
- Custom spacing, padding and justification.
- Smart detection for alignment if no lines are selected
- Multiple cursors support
- Table mode and Live preview mode
- If you only want simple and quick alignment, the predefined alignment will help.
- Open
AlignTab
in Command PaletteC+Shift+p
and enter the input in the form of<regex>/<option>
. - To learn more about regular expression, visit here and here.
- The option controls column justification, padding and maximum number of splits. A general syntax of options is
([rlc][0-9]*)*(f[0-9]*)?
. - The numbers after
r
,c
orl
determine how many spaces will be added after columns and the number afterf
controls how many matches will be made based<regex>
. - For example,
c2r3f1
means- first column is centered followed by 2 spaces
- second column is right-flushed followed by 3 spaces
- only the first match is used
- If the number after
[rlc]
is omitted, 1 space will be added after the corresponding column. - If the number after
f
is omitted, only the first match will be used. - The entire option could be omitted (i.e., input only the regular expression). In that case, default option,
l1f0
will be used. It means:- All columns are left-justified.
- A space is added after each column.
- All matched delimiters are aligned.
- Use non-capturing parenthese
(?:regex)
instread of capturing parenthese. - Delimiter is also treated as a column.
- For example,
=/rcl
means the the column before=
will be right-justifed and the column after=
will be left-justified. And=
will be centered (however, it doesn't matter as=
is of length 1).
- For example,
- The option for alignment cycles through the columns.
- For example,
regex/rl
means all odd columns will be right-justified and all even columns will be left-justified.
- For example,
- The symbol
*
repeats the preceeding justification flags.- For example
r*3
equalsrrr
, and(cr3)*2
equalscr3cr3
.
- For example
- (Experimental) Besides
r
,c
andl
, there is a newu
flag which stands for "unjustified".
Some simple examples. You can also contribute your examples there.
If you are interested in getting a keybind for live preview mode, add the following in your user keybinds file.
{
"keys": ["super+shift+a"], "command": "align_tab",
"args" : {"live_preview" : true}
}
For frequent patterns, you can consider the following in your user keybinds file. Change the keybind and the user_input
for your purpose.
//align =
{
"keys": ["super+shift+a"], "command": "align_tab",
"args" : {"user_input" : "=/f"}
}
or syntex specific keybind.
// latex align keybind, to align & and \\, but not \&
{
"keys": ["super+shift+a"], "command": "align_tab",
"args" : {"user_input" : "(?<!\\\\)&|\\\\\\\\"},
"context":[
{ "key": "selector", "operator": "equal", "operand": "text.tex.latex" }
]
}
To make it easier to remember complex patterns, you can save them in a dictionary in the settings file. To edit the patterns, go to Preferences -> Package Settings -> AlignTab -> Settings
. Use the name as key and the regex as value. For examples,
"named_patterns": {
"eq" : "=/f",
// right hand side could also be an array of inputs
"ifthen" : ["=/f", "\\?/f", ":/f"]
}
You then just use the name instead of the pattern in the input field.
To define new item in the context menu, go to Preferences -> Package Settings -> AlignTab -> Context Menu
and add, for example
[
{"caption" : "-"},
{
"id": "aligntab",
"caption": "Align By",
"children": [
{
"caption" : "{",
"command" : "align_tab",
"args" : {"user_input" : "\\{"}
}
]
}
]
AlignTab supoorts CJK characters, but you have to choose a correct font face and font size.
To my knowledge, MinCho
works on all Chinese, Japanese and Korean.
AlignTab is licensed under the MIT License.