VARIOUS ED(1) COMMANDS

WIP: Expanding page to include other CLI tools


Text manipulation
----------------------------------------------------------------------
Read file into another
......................................................................
`ed somefile'
`r someotherfile'


Insert line empty line between range of lines
......................................................................
,----
| 1,5s/$/\ 
| 
`----


Line splitting
......................................................................
Split a line using a substitution and multi-line power combo! First,
pack your substitution command's patterning matching part with the
pattern where you want your new, split line to begin. Then, hang a
back slash off the substitution command's replacement text part. Knock
that enter key on your 'board to get a new line. Throw down an
ampersand to grab that matched patt. Finally end the replacement with
a forward slash. And if you're feeling fancy, add a quick p on your
way to hitting Return.

,----
| ,pn
| 1       this line should split at the first word 'split'
| s/split/\
| &/p
| split at the first word 'split'
| ,pn
| 1       this line should
| 2       split at the first word 'split'
`----

A small variation is to put the ampersand before the
backslash. That'll make the split begin right after the matched
pattern.


Finding out stuff about files
----------------------------------------------------------------------
See number of lines in files in a directory: `find src/* -type f -exec
wc -l '{}' \;'


Get characters at position
......................................................................
{work in progress}

Sometimes an error will say "Unexpected non-whitespace character after
JSON at position 123 ..."

To find the section of text, use:

`tail -c +123 somefile'


Number of lines in files in directory
......................................................................
`find . -type f -exec wc -l {} \;'

Good for assessing distribution of code in a project. For unknown
codebases, can be a helpful plumb.


See enclosing function
......................................................................
`?^function?,/^}/pn'

Can be adapted to print lines from current position up to a point of
interest.

`.,/end/pn'


Duplicate selection
......................................................................
`s/selection/&&'


Workflow
......................................................................
I always close a function or closure right after it is opened:

,----
| a
| function() {
| 
| }
| .
| -
| c
`----