Shifter

Compatible with: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion Gogland DataGrip Rider Android Studio
17.03.2017
104 895
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 the selected value multiple times. The amount of repetitions can be configured in the plugin configuration (default: 10).

Supported generic shifting types:
  • 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, toggles the items' order (delimiters: ":", "|", ", ", " - ", " + ", " < ", " > ", " <= ", " >= ", " == ", " != ", " === ", " !== ", " || ")
  • Shifting a selection within a single line (that is not CSV), detects and swaps characters: single quote vs. double quote OR slash vs. backslash
  • Numeric values - Increments/decrements numbers by 1
  • 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
  • Selected (from questionmark on) ternary expressions - Swaps "than" and "else" statements
  • 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)
  • Selection of PHP concatenation from two strings / variables - Toggles order of the concatenated parts
  • Shifting while caret is inside a PHP doc comment @param line that contains no data type, guesses and inserts a data type by the variable name
  • Shifting a selected PHP doc comment block that contains @param comments w/ variable name but no data type, guesses and inserts data type types
  • Selection which is a Sizzle-Selector - Converts the selector into a responding JavaScript variable declaration
  • Selection of multiple JavaScript var declarations in succession - are joined into multiple comma-separated declarations
  • Selected line of code ending with a trailing //-comment - Moves the comment into a new line before the code
  • Strings wrapped in single/double quotes and backticks - Shifts to alphabetically next/previous quoted string found in current document
  • 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)
  • Selection which is a single or multi-line comment (e.g. PHP, JavaScript, C syntax) - toggle among comment type (//... vs. /*...*/). Merges multi-line comments into 1 line.
  • Logical operators: toggles between (selected) "&&" and "||"
  • Encoding/decoding of HTML special characters
  • Roman Numerals
  • Single characters and string consisting from any amount of the same character can be shifted to the prev/next ASCII value
  • Strings ending with numbers - increments/decrements the postfix
Dictionaric keyword shifting: 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
  • Primitive data types of Java, JavaScript, PHP, Objective-C
  • Doc comment tags (Java, JavaScript, PHP)
  • JavaScript event types (mouse, keyboard, frame/object, form, control, touch)
  • 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.

Download plugin

Recent change notes

  • 1.5.0
    • Added: Toggle among selected single / multi-line comment types
    • Added: Natural sort for lines and comma- or pipe-separated values
    • Added: Sorting of selected pipe-separated values
    • Added: Detect and optionally remove duplicate items in shifted comma- or pipe-separated list
    • Improved: Shifting a selected tupel now detects and retains variable whitespace around delimiters
    • Improved: Type detection hierarchy
  • 1.4.4 Improved: Shift selection which is a comma-separated tupel always toggles order (instead of alphabetical sort, as w/ 3+ items)
  • 1.4.3
    • Added: More word-tupel delimiters (" - ", " + ", " < ", " > ", " <= ", " >= ", " == ", " != ", " === ", " !== ", " || ", " && ")
    • Improved: Shifting of selected sizzle selector into a var declaration
  • 1.4.2
    • Added: Shift numeric block selection: opens dialog to chose: 1. in/decrement each or: 2. replace by enumeration
    • Added: Shift Selection > Swap order of terms separated by "|" or " : "
    • Added: Toggle (selected) logical operators: "&&" versus "||"
    • Added: Updated feature list w/ several prior not mentioned shifting types
  • 1.4.1 Bugfix: Remove duplicates when sorting lines was removing first item

...Read full changelog on github

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