:m
^^
\<..\>
"nDdd`n@n
`n
:r!
cat
/dev/tty
:%!
less
spell
fmt
expand
sed
ab
|
" INPUT MACROS that i always want active
"
map! ^Z ^[:stop^M
" so i can stop in input mode. note that autowrite is set, so
map! ^A ^[:stop!^M
" will stop me without writing.
"
map! ^K ^V^[O
" lets me do kind of a negative carriage return in input mode.
map! ^V^[^B ^[bi
" non-destructive ^W
map! ^V^[^F ^[Ea
" and its inverse
"
" EMACS Style ARROW MACROS
"
map! ^B ^V^[i
map! ^F ^V^[lli
map! ^A ^V^[I
map! ^E ^V^[A
"
"
" EXCHANGE MACROS - for exchanging things
"
map v xp
" exchange current char with next one in edit mode
map V :m+1^M
" exchange current line with next one in edit mode
map! ^P ^V^[hxpa
" exchange last typed char with penultimate one in insert mode
map = ^^
" edit previously edited file
"
" OTHER MACROS
"
map ^W :w^M
" write out the file
"
map * i^M^[
" split line
"
map ^A :stop!^M
" unconditional stop
map Y y$
" so Y is analogous to C and D
map ^R ddu
" single-line redraw
map ^N :n +/^M
" go to next file in arg list, same position
" useful for "vi +/string file1 file2 file3"
"
"
" META MACROS, all begin with meta-key '\' ; more later in file
"
map ^V^I \
" so can use both ^I [tab -
JP
]
and \ for meta-key
"
map \/ dePo/\<^V^[pA\>^V^["wdd@w
" find current word, uses w buffer
"
"
" INVERT WORD CASE - V is like W, v is like w. 3V is ok, only to EOL.
" uses both register n and mark n.
map \v ywmno^[P:s/./\~/g^M0"nDdd`n@n
" abc -> ABC ABC->abc
map \V yWmno^[P:s/./\~/g^M0"nDdd`n@n
" abc.xyz -> ABC.XYZ ABC.XYZ->abc.xyz
"
"
" EXECUTION MACROS - these two are for executing existing lines.
"
map \@ ^V^["mdd@m
" execute line as a straight vi command (buffer m, use @@ to repeat)
map \! 0i:r!^V^["ndd@n
" execute line as :r! command (buffer n, use @@ to repeat)
"
map \t :r!cat /dev/tty^M
" read in stuff from X put buffer [in X window system -JP
]
"
"
" BLOCK MACROS - these help when dealing with C blocks
"
map! ^O ^V^V^V{^M^V^V^V} ^V^[O^T
" this will begin a block, leaving in insert mode
map! ^] ^V^[/^V^V^V}^V^Ma
" and this will take you past its end, leaving in insert mode
"
"
"
" LINT MACRO. deletes all text from "lint output:" and below, (if any)
" replacing it with lint output in pretty block comment form. could
" do sed work myself, but this is faster.
"
" the map! is for subsequent map, not by people,
" though /^Lo would make sense.
" this is one of those famous time/space tradeoffs
"
map! ^Lo lint output
"
" and now for the real work
map \l Go^M/* ^Lo^M^[/^Lo^MdG:w^Mo/*** ^Lo^[<<
:r!lint -u -lc %^V|sed 's/^/ * /'^MGo***/^[N
" [NOTE: We split the macro above onto two lines for printing.
" Type it on one line in your .exrc file.
-JP
]
"
" indent this for me
"
map \i :%!indent -i4^M
"
" COMMENTING MACROS - these are actually pretty amazing
"
" from edit mode, this comments a line [for the C language
-JP
]
map ^X ^i/* ^[A */^[^
"
" and this undoes it
map ^Y :s/\/\* \([^*]*\) \*\//\1^[
"
" this next one defeats vi's tail-recursion defeatism
" called by 2 maps following this one
map! ^N ^V^[:unmap! ^V^V^M^[
"
" while in insert mode, this will put you "inside" a comment
map! ^X ^V^[:map! ^V^V^M ^V^V^[a^V^V^V^No^[a /* */^[hhi
"
" while in edit mode, this begins a block comment - ^N to escape
map \c O/*^M * ^M*/^[k:map! ^V^V^M ^V^V^M* ^MA
"
" and this is for adding more lines to a block comment - ^N to escape
map \o :map! ^V^V^M ^V^V^M* ^MA
"
"
map _ i_^V^V^V^H^V^[ll
" this character will now be underlined when less'd, rn'd, etc.
"
" SPELL MACROS
"
map \s :w^MGo^V^[:$r!spell %^M
" spell the file, placing errors at bottom, use \n to find
map \n Gdd\/
" for find next spelling error
"
"
" FORMATTING MACROS
"
map \P :.,$!fmt -75^M
" format thru end of document
map \p !}fmt -75^M
" format paragraph
map \f 1G/--^Mj:.,$!fmt -75^M
" format message (assumes MH Mail "comp" format)
map \e :%!expand -4^M
" expand tabs to 4 stops
"
map \r 1G/^-/^[:r!sed -e '1,/^$/d' -e 's/^./> &/' @ ^[/^-/^[j
" read in @, quoted (for MH replies, who link @ to current file)
map \d :s/$/ $/^M$r 74^V|? ^V^Ms^M^[$xx0
" split line, like !!fmt but cheaper
"
"
ab Jan January
ab jan january
ab Feb February
ab feb february
ab Sep September
ab sep september
ab Oct October
ab oct october
ab Nov November
ab nov november
ab Dec December
ab dec december
ab Xmas Christmas
ab xmas christmas
ab Mon Monday
ab mon monday
ab Tue Tuesday
ab tue tuesday
ab Wed Wednesday
ab wed wednesday
ab Thu Thursday
ab thu thursday
ab Fri Friday
ab fri friday
ab Sat Saturday
ab Sun Sunday
ab Int International
ab info information
|