I'd like to edit shell commands from vim, and execute them from vim. Currently I use
!!sh (pipes current line to command sh), but this removes the line itself.
Is it possible to execute the command in a shell, and paste the result below that line?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
As Clausi pointed out,
yyp!!sh yanks (copies) the current line to the register, pastes that line below the original one, and replaces the bottom one with the output of the command.
To save keystrokes you can map this action by adding the next line in the
map <F5> yyp!!sh<CR><Esc>
This way everytime F5 is pressed in command mode, the line will be executed and the result will be shown below the line.
Type shell command in the buffer, for instance
last | head,
and in command line mode
Of course instead of typing literally
CTRL-R key combination.
Look it up in
. stands for "the last inserted text".
If the command is one word for example
place cursor on that word, and type