4.6 Shell Commands
The symbol ‘%’ is used in Ex shell commands to mean current file. If
you want a ‘%’ in your command, it must be escaped as ‘\%’.
However if ‘%’ is the first character, it stands as the address for
the whole file.
Similarly, ‘#’ expands to the previous file. The previous file is the
first file in :args listing. This defaults to the previous file in
the VI sense if you have one window.
Symbols ‘%’ and ‘#’ are also used in the Ex commands :e and
:r <shell-cmd>. The commands :w and the regular :r
<file> command don't support these meta symbols, because file history is a
better mechanism.
- :sh
- Execute a subshell in another window
- :[x,y]!<cmd>
- Execute a shell <cmd> [on lines x through y;
% is replace by current file, \% is changed to %
- :[x,y]!! [<args>]
- Repeat last shell command [and append <args>].
- :!<cmd>
- Just execute command and display result in a buffer.
- :!! <args>
- Repeat last shell command and append <args>
- <count> !<move><cmd>
- The shell executes <cmd>, with standard
input the lines described by <count><move>,
next the standard output replaces those lines
(think of ‘cb’, ‘sort’, ‘nroff’, etc.).
- <count> !!<cmd>
- Give <count> lines as standard input to the
shell <cmd>, next let the standard output
replace those lines.
- :[x,y] w !<cmd>
- Let lines x to y be standard input for <cmd>
(notice the <sp> between w and !).
- :<address>r !<cmd>
- Put the output of <cmd> after the line <address> (default current).
- :<address>r <name>
- Read the file <name> into the buffer after the line <address> (default
current).
- :make
- Run the make command in the current directory.