Detects type of selection, line or keyword at caret and shifts it "up" or "down" on keyboard shortcut. If there's only one shiftable word in a line, it can be shifted without the caret touching it. Lowercase/uppercase or lower case with upper first character of shifted words is maintained.
DEFAULT KEYBOARD SHORTCUTS
- Ctrl+Shift+Alt+Comma - Shift Down
- Ctrl+Shift+Alt+Period - Shift Up
- Ctrl+Shift+Alt+K - Shift Up More*
- Ctrl+Shift+Alt+J - Shift Down More*
Shift more: repeats shifting a value multiple times. The amount of repetitions can be configured in the plugin configuration (default: 10).
On Macs, the keyboard shortcuts are Comma or Period key together with Shift+Alt+Cmd
Tip: Using Mouse Wheel
To setup the mouse wheel to invoke shifting, open the IDE preferences and go to: “Keymap”. Search for “Shift”, than right-click the shifter action items and use the option “Add mouse shortcut”. Mouse shortcuts can include hotkeys, this way for instance “Shift + Wheel Up” can be assigned to “Shift-Up”, “Shift + Wheel Down” to “Shift-Down”.
- Shifting a multi-line selection sorts the lines alphabetically ascending/descending.
- Shifting a single-line selection, that is a comma- or pipe-separated list, sorts the items ascending/descending.
- Shifting a single-line selection, that is a tupel, flips the items' order (delimiters: ":", "|", ", ", " - ", " + ", " < ", " > ", " <= ", " >= ", " == ", " != ", " === ", " !== ", " || ")
- Shifting a selection that is a camelCased (w/ lower or upper lead character) word pair, flips the order of the words.
- Shifting a selected (from questionmark on) ternary expression, swaps "than" and "else" statements
- Shifting a selected PHP concatenation from two strings / variables, toggles the concatenated items' order
- Shifting a selection from a CSS file, sorts all attributes inside their selectors (alphabetically, vendor-attributes and vendor-styles at the end)
- Shifting selected attribute-style lines inside a CSS (or LESS or SASS) file, sorts them (alphabetically, vendor-attributes and vendor-styles at the end)
- Numeric values - Incrementing/decrementing numbers
- Strings ending with numbers - increments/decrements the postfix
- Numeric block selection: opens dialog to chose: 1. in/decrement each or: 2. replace by enumeration
- UNIX (and millisecond based) timestamps - Increments/decrements by one day, shows a balloon info with the shifted date in human-readable format
- CSS hex RGB colors - Shifts color value lighter/darker
- CSS length values - Shifts numeric length values up/down by 1 (units: em, in, px, pt, cm, rem, vw, vh, vmin, vmax)
- Increment/decrement roman numerals
Code- and DOC Comments
- Shifting a selection within a single line: detects and swaps characters: single quote vs. double quote OR slash vs. backslash
- Shifting a selected (or the caret touching a) camel-cased string, converts it into a minus-separated path (and vice versa)
- Strings wrapped in single/double quotes and backticks - Shifts to alphabetically next/previous quoted string found in current document
- Strings surrounded by round or square brackets: toggles surrounding "(" and ")" versus "[" and "]"
- Logical operators: toggles between (selected) "&&" and "||"
- HTML en/decoding of selected special characters
- Single characters and string consisting from any amount of the same character can be shifted to the previous/next ASCII value
- Selected line of code ending with a trailing //-comment - Moves the comment into a new line before the code
- Selected HTML comment inside a PHP / PHTML file: converts it into a PHP block comment (and vice versa)
- PHP DOC: Shifting a selected PHP doc comment block that contains @param comments w/ variable name but no data type, guesses and inserts data types
- PHP DOC: Shifting while the caret is inside an @param annotation that contains no data type, inserts a data type (guessed from the variable name)
- JsDOC: Shifting w/ the caret touching a data type that is not wrapped in curly brackets, inside an "@param", "@returns" or "@type" annotation: adds the missing curly brackets
- Selected JsDoc block: Convert "@return" into "@returns", add missing curly brackets around data types in "@param", "@returns" and "@type" lines, correct invalid data types into existing data types (bool => boolean, int(eger) => number), reduce empty JsDoc lines
Dictionaric Keyword Shifting
- PHP variables - Shifts to alphabetically next/previous variable found in current document ("shift more" shifts until first variable with a different first letter)
- Selected PHP array - Shifts among long and shorthand syntax (PHP >= 5.4)
Shifter comes with a customizable, file extension specific and globally usable dictionary of shiftable keywords. Some keyword types from the default dictionary:
- PHP core magical constants - Shifts PHP's magic constants (__FILE__/__LINE__ etc.)
- CSS orientations and positioning: top/right/bottom/left and absolute/relative, and geographical directions (north/east/south/west)
- Accessibility types: public/private/protected
- MySql data types: Shifts to next bigger/smaller numeric/string type
- Named colors from the sRGB color space (white/lightgray/gray...)
- Text styles (bold, italic...)
- Web image (gif/jpg/png) and audio (au/aif/wav etc.) format extensions
- Full and abbreviated names of months and weekdays and units of time
- Logical operators (and/or/xor/not), arithmetic operations (addition/subtraction...) and arithmetic elements (sum/difference/product..)
- Meta-syntax terms: foo/bar/baz...
- Names of common data collection types (list/set/bag/dictionary/tree...)
- Names of numbers (one/two/three etc.) and ordinal numbers (first/second/third etc.)
- Boolean (paired) keyword values - Toggles true/false, on/off, yes/no (e.g. Objective-C), shown/hidden, show/hide, positive/negative, from/until, enable(d)/disable(d), pass/fail, min/max, expand/collapse, asc/desc, first/last
Please note: This plugin is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Recent change notes
...Read full changelog on github
- Improved: Ternary shifting: maintain multi-line formatting, reformat selection after shifting
- Improved: Quotes conversion: extended intention popup options
- Improved: DOC data type detection
- Improved: Shiftable type detection
- Improved: DOC part detections and shifting
- Improved: JsDoc shifting - added @type completion + correction, improved detect / complete / correct annotations
- Improved: Plugin settings UI
- Added: Plugin setting to enable quote conversions (1. single quotes to double, 2. double quotes to single)
- Added: Plugin setting to enable PHP array syntax conversions (1. long to short, 2. short to long)
- Added: Selection that is wrapped in parenthesis: toggle surrounding round vs. square brackets
- Added: Intention popup when selection is both: shiftable PHP array (short syntax) and surrounded by parenthesis
- Improved: DOC param shifting and data type detection
- Improved: JsDoc @param line w/o data type can now be shifted (to insert the missing data type) without having to be selected
- Improved: Shifting selected JsDoc block comment (add missing data type annotations)
- Improved: Extended type detection of PHP Doc and JsDoc data type completion
- Improved: PHP DOC @param data type insertion - can now also be invoked from selected line out of DOC comment block
- Improved: When there are only 2 sortable items, the related intention option now says "swap items order" instead of "sort items"
General usage instructions
Ctrl+Shift+Alt+Comma - Shift down word at caret / in line / sort selected lines ascending Ctrl+Shift+Alt+Period - Shift up word at caret / in line / sort selected lines descending