" 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