9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] A learners sam cheat sheet
@ 2021-08-05 16:16 revcomninos
  0 siblings, 0 replies; only message in thread
From: revcomninos @ 2021-08-05 16:16 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 6054 bytes --]

Below is my learners cheat sheet of sam commands which I am enclosing should find it helpful. I welcome any suggestions and/or corrections. These have been put together mostly from the standard resources, but there are gaps in my knowledge. 

$ - end of line/file
$-/vi/ -- search from end of the file backwards
0,$ t "peter.c" 0 -- copy dot from 1 file to another
0 <date -- insert date at the top of the file
* 0 or more
0/regexp/ locates the first match of the expression in the file. (The form 0;// sets dot unnecessarily.)
0/vi/+-p -- search for the string "vi" and print the whole line
0/vi/ -- search from the 1st line forwards
-/^/+#10 -- go to 10th column of current line
1 <date -- replace first line with date
a1+- (a1-+) selects the line containing the end (beginning) of a1.
. any character
. | awk '!seen[$0]++' -- delete non-juxtaposed duplicate lines in dot
, | awk '!seen[$0]++' -- delete non-juxtaposed duplicate lines in whole file
[a-z] class a through to z
B < echo *.org -- One can load multiple files by using < as in:
B < grep -l vi * will load only those files that contain the string "vi"
{} Braces group commands
< cat /home/red/bin/lucy.id
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
double space selection -- x/0 a/0
< echo "Hello world" -- insert ascii code at the current position
, -- equivalent to 0,$
e replaces current file with one specified
f changes the filename
f <nl? -- set the current filename to null
| frm -- format selected text
g/regexp/ command -- If dot contains regexp, run command
indent selection 1 tab -- x/^/a/ /
. means that it is the current file
+ means the file has a window open
- means the file has been read by sam
* means the file is open in more than one instance
' means the loaded file differs from the file on disk
[ˆn] any char but n
/.+\n/ finds lines with text between lines
n gives a LIST of files
/.*\n/ -- matches single whole lines
[nm] n or m
| pipe dot through command
-/.PP/,/.PP/- highlight current paragraph in an nroff doc
p -- prints contents of dot
= -- prints value of dot
.,/regexp/ extends dot.
./regexp/// finds the second following occurrence of the expression
r emacs.ms is equivalent to <cat emacs.ms
< replace dot by stdin of command
(re) tag pattern
r replaces dot in the current file with the contents of the file specified
! run the command
> send dot to stdin of command
,|sort -- sort the file
, > spell -- check spelling
# substitute #'th tagged pattern
,t "junk.c" 0 -- copy current file to start of junk.c
|tr a-z A-Z -- change case
,| uniq -- delete juxtaposed duplicates blank lines
/vi/+- m 0 moves the line containing "vi" to the top of the file
/vi/ or +/vi/ -- search forward
/vi/+- t 0 copies the next line with vi to the top of the file
/vi/+/vi/ -- search for the second occurrence of "vi" following dot
v/regexp/ command -- If dot does not contain, run command
,>wc -l -- count lines in file
,>wc -- word count of current document
w writes the whole file to disk or parts of a file
x/$^/!# -- comment a line
,x/ +$/d
.x/'+$/i/ --color-auto/
x/$^/!# ,x/^$\n/d
x/$^/!# ,x/[0-9]/d
x/^/.,/0d -- strip C comments from selection
,x/^/a/ / -- indents blocks of text with a tab stop.
,x/[a-zA-Z0-9]+/-#0;+#1| tr a-z A-Z -- capitalise every word (slow)
,x/[‘‘’’“”‘’]/c/"
X/\.c$/ ,x/variable/+-p -- find all uses of a variable in the C source files
,x/‘‘|’’/c/"/ -- change smart quotes to curly
x cmd - set dot and run command on each matching line
,x/  +/d
,x/\*/d
,x/^ +/d
,x/\*/d -- delete all asterisks
,x/^ /d -- deletes the indents
X D -- remove out all up to date files
,x/^ +/d -- Remove the space at the beginning of the line
,x g/^$\n/d -- delete blank lines
,x/good/ c/bad/
,x g/vi/p - idem
,x/^http.[^,]*?/d
,x/^http.[^,]*?/d -- search for "http...," and delete
,x/\n+/a/\n/ -- finds every occurrence of 1 or more (+) newlines (\n) and appends a new line.
,x/.*\n/ g/ed/ v/red/ p -- find ed but not red
,x/(.+\n)+/ g/It was the best of times/ p
,x /.*\n/ g/vi/ p - break file into lines, if lines contain "vi, print
,x/\n\n\n+/c/\n -- idem
.x/Peter/d -- search dot for 'Peter' and delete 'Peter'
X/regex/b -- switch to a loaded file with a regex
X/regexp/ command -- Run command on files whose menu line matches
x/regexp/command - set dot and run command on each match
X/\.sam$/,x/the/+-p -- search multiple files for text and print the results
.x s/.*/echo "&."/
,x s/good/bad/
,x s/\.\.\n/g -- break sentences into new lines
,x s/\\p/\n\n/g
,x s/\\s/\n\n/g
,x/<string>/|tr a-z A-Z
x/^<tab>/d -- remove 1 tab of indent from selection
,x/teh/c/the/
,x/^TODAY$/<date -- replace today with output of date
,x/\\v|\\c|\\s1|\\q1/d
,x/vi/c/vi{TM}/ -- change vi to vi{TM}
,x/vi/+-p -- print lines that contain the string vi
,x/vi//{TM}/d - find the {TM} that follows every occurrence of vi $ delete
,x/vi/x/E/c/e/ - change all the capital "E"s in "vi" to lower case "e"s
X/.*/,x/<cr>/d -- strip <cr> from all files
X ,x/(.+\n)+/ g/account/p
,y/best/ x/(.+\n)+/g/It was the best of times/p
Y/regexp/ command -- As X but select unmatched files
y/regexp/ command -- as x but select unmatched text

,x[a-zA-Z]+/{
g/fred/ v/...../ c/jim/
g/jim/ v/..../ c/fred/
} -- swap fred for jim in file
,x/Emacs|vi/{
g/Emacs/ c/vi/
g/vi/ c/Emacs/
}
Go from search results in sam window to document:
,x g/<string>/{
p
}

,| ssam -f your_script
As for comments in scripts, if you use ssam(1) to run them the easiest way
would be starting the lines you want to be ignored with a character
that isn't a sam command - this will work because ssam sends stderr to /dev/null.

------------------------------------------
9fans: 9fans
Permalink: https://9fans.topicbox.com/groups/9fans/Tc2ebea6bfef26073-M5318338af59b6b616cd4210c
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

[-- Attachment #2: Type: text/html, Size: 8962 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-08-05 16:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-05 16:16 [9fans] A learners sam cheat sheet revcomninos

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).