This answer states that :w !tee
writes current buffer to stdout. Why and how does it work? Can I write :x !tee
or :w !cat
? What's exclamation mark meaning in this case? (I assume it's not forcing operation.) Does it work only if tee
command exists (not on Windows)?
Asked
Active
Viewed 171 times
1

Community
- 1
- 1

George Sovetov
- 4,942
- 5
- 36
- 57
1 Answers
3
!
tells vim
that it's a shell command and not a filename. So :w !tee
or :w !cat
gives the vim buffer to those commands as input. They in turn send the buffer content to stdout
.
Try :w !wc -l
, this will give you number of lines in your buffer printed on stdout
.
You can also read output from a command into vim buffer. You can use read
command with a shell command. For example, :read !date
executes the date
command on shell and sends the output back to vim buffer.

ronakg
- 4,038
- 21
- 46
-
Thanks, it's getting clearer for me! Using your answer, I managed to find [documentation page](http://vim.wikia.com/wiki/Display_output_of_shell_commands_in_new_window). – George Sovetov Apr 12 '16 at 21:43