From: revcomninos@gmail.com
To: 9fans <9fans@9fans.net>
Subject: [9fans] Revised sam cheat sheat
Date: Tue, 31 Aug 2021 01:53:10 -0400 [thread overview]
Message-ID: <16303891900.ad7cb5c.65212@composer.9fans.topicbox.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7257 bytes --]
The last cheat sheet I posted was in need of revision and reordering. This one is better than the last--I hope.
CHEAT SHEET OF SAM
COMMANDS
x cmd - set dot and
run command on each matching line
. -- apply command
to dot
, -- apply command
to whole document
< replace dot
with std input of command
! run the unix
command
> send dot to std
input of command
0<date -- insert
date
>spell -- check
spelling
>wc -l -- count
just the lines
>wc -- do a line,
word and character count
|tr a-z A-Z --
change case
,x/".+"/
y/"/ | tr [:lower:] [:upper:]
OR
,x/".+"/
y/"/ | tr a-z A-Z
-- to capitalise all
letters inside quotes
s/.*/*&*/ --
enclose phrase in asterisks
|fold -s -- break
up/format long lines
|fmt -- idem
|sort -- sort the
file
|uniq -- delete
juxtaposed duplicate lines
|awk '!seen[$0]++'
-- delete non-juxtaposed duplicate lines
,x/\n+/a/\n/ --
finds every occurrence of 1 or more (+) newlines (\n) and appends a
new line.
/vi/ or +/vi/ --
search forward
0/regex/ -- search
from beg. of file forwards
0/regex/+-p --
search for a string and select the whole line that contains it
/vi/+- m 0 selects
and moves the next line containing "vi" to the top of the
file
/vi/+- t 0 selects
and copies the next line with "vi" to the top of the file
$/regex/ -- search
from end of the file backwards
Search for a string,
and then go from search results in sam window to document:
,x g/hello/{
p
}
0,$ t "peter.c"
0 -- copy contents of one to another
, and ; selects
whole document
, equivalent to 0,$
0;5 and 0,5 -
selects 1st five lines
-/^/+#10 -- go to
10th column of current line
B < echo *.org --
One can load multiple files by using <
B < grep -l vi *
will load only those files that contain the string "vi"
D is the complement
of B. It eradicates the file from sam's memory but does not delete
the file from disk! Without a name argument removes current file
e replaces current
file with one specified
f changes the
filename
f <nl? -- set the
current filename to null
n gives a list of
read and loaded files
{} Braces group
commands
[ˆn] any char but n
[nm] n or m
w writes the whole
file, or parts of a file to disk
< cat
/home/red/bin/songs -- insert contents of a file
r
/home/red/bin/songs -- idem
r replaces dot in
the current file with the contents of the file specified
<
/home/red/bin/songs -- insert contents of a script
/home/red/bin/pass google -- output contents of script to sam window
< echo "Hello
world" -- insert ascii code at the current position
x/^/a/ / -- indent
the selected text by 1 tab. x means apply to all lines in the
selection.
sam terminal
information
-----------------------
. indicates the
current file
+ the file has a
window open
- the file has been
read by sam
* the file is open
in more than one instance
' the loaded file
differs from the file on disk
/.+\n/ -- finds
lines with text
/.*\n/ -- matches
single whole lines
0/Ben/,/Son/ -- find
a range of text
.,/regexp/ --
selects text FROM dot to the regex
./regexp// --
selects the second occurrence of a regex
./regexp// --
selects the third occurrence of a regex
/vi/+/vi/ -- search
for the second occurrence of "vi" following dot
p -- prints contents
of dot in sam terminal
= -- prints current
value of dot in sam terminal
,t "junk"
0 -- copy current file to start of file "junk"
Perform conditional
ACTIONS on lines:
g/regexp/ command --
g = if. If dot contains regexp, run command
g/test/d
,x g/vi/p -- if a
line has "vi" print the line in sam window
v/regexp/ command --
If dot does not contain, run a command
,x/.*\n/ g/ed/
v/red/ p -- find lines with ed but not red
,x/".+"/
y/"/ -- search for text in quotes but do not show lines with "y"
,x/".+"/
x/"/ -- search for text between quotes and only show the quotes
,x /.*\n/ g/vi/ p -
break file into lines, if lines contain "vi, print
,x/ +$/d -- delete
empty whitespace at end of every line
,x/'+$/i/
--color-auto/ -- insert the phrase "--color-auto" into
every line that ends in 1 or more '
.x/Peter/d -- search
dot for 'Peter' and delete 'Peter'
,x/\\v|\\c|\\s1|\\q1/d
-- multiple deletions
,x/\*/d -- delete
all asterisks
,x/^ /d -- delete
the indents
,x/^ +/d -- delete
all blank spaces at beginning of lines
,x/^$\n/d -- delete
all blank lines
,x/\n\n\n+/c/\n --
change multiple blank lines into 1 blank line
,x/[0-9]/d -- delete
lines with numbers
,x/^http.[^,]*?/d --
search for "http...," and delete
C-i -- create a tab
stop of 8 spaces
,x/^/a/ / -- indents
text with a tab stop.
x/^ /d -- remove 1
tab of indent from selection
,x/[‘‘’’“”‘’]/c/"
-- change all smart quotes into straight ones
,x/".+"/
x/"/ c/'/ -- change double quotes (that surround one or more
characters) to single quotes
,x/good/ c/bad/ --
change "good" to "bad" on every line
,x/teh/c/the/
,x/Emacs/x/E/c/e/ -
change all the capital "E"s in "Emacs" to lower
case "e"s
X -- is an iterator
that works on files not lines
X D -- remove out
all up to date files
X/regexp/ command --
Run command on files whose menu line matches
X/questions/D --
close file called "questions"
X/\.sam$/,x/the/+-p
-- search multiple files for text and print the results
X/.*/,x/<cr>/d
-- strip <cr> from all files
X ,x/(.+\n)+/
g/account/+-p -- look through every file, and every line, and if any
line contains "account" print it out in sam window
s/.*/& Hello/ --
add " Hello" to the end of line
s/good/bad/
The y command
*excludes from consideration* in the seach that follows.
,y/ben/
x/(.+\n)+/g/Directory details/p
Y/regexp/ command --
Exclude the file named by "regex" from consideration.
.x g/fred/
v/........./ c/jim/ -- Look through dot. If dot contains "fred"
change it to "jim" provided it is not "fred....."
,x[a-zA-Z]+/{
g/fred/ v/...../
c/jim/
g/jim/ v/..../
c/fred/
}
In the above command
braces {} allow for multiple commands. The command says: search every
line that contains 1 or more letters, if the line contains "fred"
change it to "jim" and if "jim" change it to
fred, provided "fred" is not "fred." and "jim"
not "jim."
g - "if"
v" - "if
not, unless the regex is"
,| ssam -f
your_script -- apply a sam script
------------------------------------------
9fans: 9fans
Permalink: https://9fans.topicbox.com/groups/9fans/T5a59d8c3b404b14d-Mcbaa0122bf6dba5f8794b600
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
[-- Attachment #2: Type: text/html, Size: 15962 bytes --]
next reply other threads:[~2021-08-31 5:53 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-31 5:53 revcomninos [this message]
2021-08-31 6:58 ` Sean Hinchee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16303891900.ad7cb5c.65212@composer.9fans.topicbox.com \
--to=revcomninos@gmail.com \
--cc=9fans@9fans.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).