datasert / vscode-texty

Sweet set of Text utilities for VS Code
https://marketplace.visualstudio.com/items?itemName=datasert.vscode-texty
Apache License 2.0
7 stars 4 forks source link

Overview

Texty is a sweet set of Text related utilities that makes you power user.

If you have any issues or feature requests, please create an issue at https://github.com/datasert/vscode-texty/issues. You can also use Texty: Create Issue command to open this url.

Install

To install this extension, follow these steps.

Install

Commands

Texty has multiple modules, each of them with multiple utilities/commands.

Usually all commands within the module starts with same verb. For ex., insert or Convert.

Also all Texty commands are prefixed with Texty: to make it clear and avoid confusion. So to list all Texty commands, just enter Texty:.

Open

Command Description
Open file in Browser Opens the current file in previously selected browser
Open file in Browser... Opens the current file in browser selected by the user. Once selected, the browser preference is saved and then above command will use this browser
Open file in System default app Opens the current file in System associated app.

Copy

Command Description
Copy text Copies the selections in text only mode into clipboard
Copy text append Appends the selections in text only mode into current text contents of the clipboard
Copy lines containing string Copies lines containing user specified string
Copy lines not containing string Copies lines not containing user specified string
Copy lines containing regex Copies lines containing user specified regex pattern
Copy lines not containing regex Copies lines not containing the user specified regex pattern

Insert

Command Description
Insert Number Series from 0 Inserts number series starting from 0
Insert Number Series from 1 Inserts number series starting from 1
Insert Number Series... Prompts user to enter various options and inserts series according to specified options.
Insert Uuid Inserts uuid into the selections. For ex., ece1953e-8bca-46d8-a701-56c6fe1c1aaa
Insert Uuid (No Dashes) Inserts uuid without dashes into selections. For ex., ece1953e8bca46d8a70156c6fe1c1aaa
Insert Uuid Key Inserts uuid with {} and inserts into the selections. For ex., {ece1953e-8bca-46d8-a701-56c6fe1c1aaa}
Insert Short Id Inserts short ids. For ex.,
Insert Lorem Ipsum Word Inserts one word of lorem ipsum text into selections
Insert Lorem Ipsum Line Inserts one sentense of lorem ipsum text into selections
Insert Lorem Ipsum Paragraph Inserts one paragraph of lorem ipsum text into selections
Insert Lorem Ipsum with Options Prompts user for options and generates the text according to that
Insert Lorem Picsum Inserts image tag with image from Lorem Picsum with previosly specified or default options. Checkout Picsum.
Insert Lorem Picsum with options Shows options dialog box and then inserts random image based on specified options
Insert Time ISO Format Inserts current time in ISO 8601 format. For ex., 2019-11-30T04:25:12Z
Insert Date ISO Format Inserts today in ISO 8601 format. For ex., 2019-11-29
Insert Preset Series Prompts user to select preset type and generates series of that type. Available presets are here. See guide Preset Series for more information.

Convert Case

Command Description
Convert to Lower Case For ex., account number
Convert to Upper Case For ex., ACCOUNT NUMBER
Convert to Camel Case For ex., accountNumber
Convert to Pascal Case For ex., AccountNumber
Convert to Snake Case For ex., account_number
Convert to Kebab Case For ex., account-number
Convert to Constant Case For ex., ACCOUNT_NUMBER
Convert to Dot Case For ex., Account.Number
Convert to Path Case For ex., Account/Number
Convert to Space Case For ex., Account Number
Convert to Sentense Case For ex., Account number
Convert to Capital Case For ex., Account Number

Convert Date/time

Command Description
Convert to Date/Time... Prompts user for options and converts the date/time to according to those options.
Convert to Relative time Converts the date/times to relative times. For ex., 2 minutes ago, 5 days ago etc.,
Convert Date/Time to human friendly format Converts the selected date/time to human friendly format. For ex., Tue Jan 1 2019, 6:45:23 am

Filter

Command Description
Filter lines containing string Filters lines containing user specified string
Filter lines containing string into new editor Same as above but inserts the results into new text editor
Filter lines not containing string Filters lines not containing user specified string
Filter lines not containing string into new editor Same as above but inserts the results into new text editor
Filter lines containing regex Filters lines containing user specified regex pattern
Filter lines containing regex into new editor Same as above but inserts the results into new text editor
Filter lines not containing regex Filters lines not containing the user specified regex pattern
Filter lines not containing regex into new editor Same as above but inserts the results into new text editor

Sort

Command Description
Sort Lines Sorts lines by ascending order
Sort Lines (Descending) Sorts lines by descending order
Sort Lines (Ignore Case) Sorts lines case insensitively by ascending order
Sort Lines (Ignore Case Descending) Sorts lines case insensitively by descending order
Sort Lines (Length) Sorts lines by length of each line (shortest first)
Sort Lines (Length Descending) Sorts lines by length of each line descending (long first)
Sort Lines (Shuffle) Sorts lines by random order
Sort Lines (Natural) Sorts lines by natural order. Natural order is where numbers with in the lines are sorted numerically.
Sort Lines (Natural Descending) Sorts Lines by natural order (see above) descending order

Remove

Command Description
Remove Blank Lines Removes all blank lines (lines with only whitespaces)
Remove Blank Lines (Surplus) Removes all blank lines if there are more than one
Remove Duplicate Lines Removes all duplicate lines
Remove Duplicate Lines (Ignore Case) Removes all duplicate lines ignoring case

Split

Command Description
Split by Sentences Splits the selection by sentences (separated by dot)
Split by Length Prompts user to enter max length and splits the lines by that size
Split by Length (80 chars) Splits the lines by max 80 chars
Split by Length (120 chars) Splits the lines by max 120 chars

Join

Command Description
Join lines for In clause Joins the lines to SQL in clause format. For ex., 'foo', 'bar'
Join lines to csv Joins the lines to csv
Join lines with space Joins the lines with space in between
Join lines with options Prompts user for options and joins the lines with that options

Encoding/Decoding

Command Description
Url Encode Url Encodes the text
Url Decode Url Decodes the text
Base 64 Encode Base 64 Encodes the text
Base 64 Decode Base 64 Decodes the text
Html Encode Html Encodes the text
Html Decode Html Decodes the text
Xml Encode Xml Encodes the text
Xml Decode Xml Decodes the text
Jwt Decode Jwt Decodes the text

Encryption

Command Description
View MD5 Hash Shows the Md5 hash of selections or all text
Encrypt Text Prompts for password and replaces each selections with encrypted base64 encoded strings
Decrypt Text Prompts for password and replaces each selections with decrypted base64 encoded strings

Custom Script/Command

See the guide below for more information about these commands.

Command Description
Process selections using script Prompts user to enter any Javascript code and process selections using that script
Process lines using script Prompts user to enter any Javascript code and process lines using that script
Process text using Custom Command Prompts user to select one of the defined custom commands and processes selections using that command

Translate

Command Description
Translate using Google Opens the Google Translate url using selected text

Guides

Number Series

Command Insert Number Series... can be used to generate number series of any kind using options below.

Option Type Description
start int or float The starting number of the series. It can be integer or float and can also be -ve value. For ex., 1 or 1.5 or -100
step int or float The amount to increment for each new number. This value will be added to previous value. This can be -ve value if you want to series to go back.
count int The maximum number of values to generate. After these many values are generated, series will start over from start value
format string If you want to format the numbers, you can specify the format string here and it will be formatted using numeral npm package. See here for formatting options.
padSize int If you want to pad the numbers, you can specify the size of total length of string. If generated series is smaller than this length, then it will be left padded with string specified below.
padString string If number needs to be padded, it will use this pad string. This can be single char or multi char. If no pad string is specified, then defaults to space.

Preset Series

Command Insert Preset Series can be used to generate series of various preset series into the selection. Available presets are found in this config. In later versions, we will add support for custom series.

Here are avaiable presets.

Type Description
Greek Letter Names For ex., Alpha, Beta
Greek Lettes For ex., α, β
Letters Lowercase For ex., a, b
Letters Uppercase For ex., A, B
Months Long For ex., January, February
Months Short For ex., Jan, Feb
Number Words For ex., One, Two
Roman Numbers For ex., I, II
Weekdays Long For ex., Monday, Tuesday
Weekdays Short For ex., Mon, Tue

Process selections using Script

The command Process selections using script prompts use to enter any arbitary javascript expressions and replaces the selections with result of that expression execution.

The custom script can refer to following variables.

Variable Type Description
selection string Current selection which the script is processing. If there are more than one selection, then script is executed multiple times (once for each selection)
lodash lodash This is full lodash reference so you can use any of those functions
_ lodash Alias for lodash
moment moment The moment-timezone reference so you can use it to format dates etc.,
numeral numeral The numeral reference so you can use it to format numbers etc.,
texty object Object with various Texty modules. Check out the source evals.ts for more info on available modules

Here are some examples.

Process lines using Script

This command is same as Process selections using script but it splits each selection into lines, then calls the script for each line within each selections. This script context has access to following variables in addition to ones listed above.

Variable Type Description
line string Line for which script is being executed

Process selections using Custom Command

If you execute a particular script multiple times, then you could save that script as a custom command with friendly title and execute that command with easy selection. You can also keybind that command if you want to execute that command quickly.

To add a custom command, follow these steps.

These custom commands does't appear in the main command palette because limitation of vscode api however you could still keybind those custom commands either from UI or from json as follows.

...
    {
        "key": "shift+alt+cmd+n",
        "command": "texty.custom.convertSelectionsIntoLength"
    }
...

Credits