" run command
" no stdin
" output displayed in "Press enter to continue" style
" current buffer untouched
:!uptime
" run command
" pipe range of text to command on stdin
" output replaces the range in the current buffer
:RANGE!grep foo
" run command
" no stdin
" append output beneath the current line in the buffer
:r!uptime
" run command
" no stdin
" append output beneath the last line in the range
:RANGEr!uptime
" run command
" pipe whole buffer to command on stdin
" output displayed in "Press enter to continue" style
" current buffer untouched
" (the space between w and ! is important)
:w !pbcopy
" run command
" pipe range to command on stdin
" output displayed in "Press enter to continue" style
" current buffer untouched
" (the space between w and ! is important)
:RANGEw !pbcopy