# ST-TypeShort [![Required ST Build](https://img.shields.io/badge/ST-4114+-orange.svg?style=flat-square&logo=sublime-text)](https://www.sublimetext.com) [![GitHub Actions](https://img.shields.io/github/actions/workflow/status/jfcherng-sublime/ST-TypeShort/python.yml?branch=st4&style=flat-square)](https://github.com/jfcherng-sublime/ST-TypeShort/actions) [![Package Control](https://img.shields.io/packagecontrol/dt/TypeShort?style=flat-square)](https://packagecontrol.io/packages/TypeShort) [![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/jfcherng-sublime/ST-TypeShort?style=flat-square&logo=github)](https://github.com/jfcherng-sublime/ST-TypeShort/tags) [![Project license](https://img.shields.io/github/license/jfcherng-sublime/ST-TypeShort?style=flat-square&logo=github)](https://github.com/jfcherng-sublime/ST-TypeShort/blob/st4/LICENSE) [![GitHub stars](https://img.shields.io/github/stars/jfcherng-sublime/ST-TypeShort?style=flat-square&logo=github)](https://github.com/jfcherng-sublime/ST-TypeShort/stargazers) [![Donate to this project using Paypal](https://img.shields.io/badge/paypal-donate-blue.svg?style=flat-square&logo=paypal)](https://www.paypal.me/jfcherng/5usd) TypeShort is a snippet-like plugin for Sublime Text. It replaces placeholders into corresponding replacements in real-time while typing. ## Why This Plugin Have you ever considered `$`, `->`, `*` or `&`, etc to be uncomfortable to type? Typing them usually requires you to move your fingers farther. ![screenshot](https://raw.githubusercontent.com/jfcherng-sublime/ST-TypeShort/gh-pages/images/screenshot.gif) Oh, OOP PHP uses `$this->` so often... How long it takes you to type it? Take the screenshot above as an example, you can set `fj█` (`█` represents space here just for visibility) as a placeholder for `$` in PHP. This plugin will automatically replace `fj█` with `$` in PHP whenever you type it. Although `fj█` is 3-char, it can be typed faster than a single `$` and you do not have to move any of your finger due to QWERTY keyboard layout. ### The ST Built-in Way You can kind of having the same results with the following keybinding. So actually nowadays you may not need this plugin any more.
```js [ // HTML { "keys": ["c", "m", "t", " "], "command": "insert_snippet", "args": { "contents": "" }, "context": [{ "key": "selector", "operand": "text.html.basic - source.php", }], }, // PHP { "keys": ["f", "j", " "], "command": "insert", "args": { "characters": "$" }, "context": [{ "key": "selector", "operand": "source.php", }], }, { "keys": ["d", "k", " "], "command": "insert", "args": { "characters": "->" }, "context": [{ "key": "selector", "operand": "source.php", }], }, ] ```
## Installation This package is available on Package Control by the name of [TypeShort](https://packagecontrol.io/packages/TypeShort). Note that you have to set your own `(placeholder, replacement)` pairs to make this plugin work properly. ## Settings This plugin does not have any default binding since obviously they are very personal. To add a binding, edit settings from the menu `Preferences » Package Settings » TypeShort » Settings`. ### Example Settings ```javascript { // This file is an example settings. // You should write your own settings in "Preferences » Package Settings » TypeShort » Settings" // the symbol used to represent the new cursor position after a replacement "cursor_placeholder": "{|}", // You can alternatively use either syntax file name, syntax name or scopes in the "syntax_list". // But scopes are recommended and the use of syntax (file) name may be removed in the future. // // - syntax file name: The syntax file name without extension. // - syntax name: It's package-dependent and as shown on the bottom-right corner of your ST windows. // - scope: ctrl+alt+shift+p shows it which usually starts with "source.xxx" or "text.xxx". // You can use any ST selectors here. See https://www.sublimetext.com/docs/3/selectors.html "bindings": [ { // only works in HTML "syntax_list": ["text.html.basic"], // convert 'cmt ' into '' and place the cursor at its mid "keymaps": { "cmt ": "", }, }, { // only works in PHP "syntax_list": ["source.php"], // convert 'fj ' into '$' // convert 'dk ' into '->' "keymaps": { "fj ": "$", "dk ": "->", }, }, { // only works in C/C++ "syntax_list": [ "source.c", "source.c++", "source.objc", "source.objc++", "source.c++11", // C++11 package ], // convert 'fj ' into '*' // convert 'dk ' into '->', "keymaps": { "fj ": "*", "dk ": "->", }, }, ], } ```