showkey
showkey

Reputation: 348

How to make the specified command run in vim?

I know how to make shell command run in vim,in command mode,type

:!shell_command

Now, I have a command in line 16 of a file open in Vim.

cp /home/debian/Downloads/rar/rar /usr/local/bin

screenshot

How can I run this command in vim, without typing all of it?

When I hit :! to open up the ex command line and then use <C-r>", I get this:

ls /tmp^m

screenshot

I have to erase ^m with the backspace key, and press the enter key, is that right? can i not to let ^M to be shown ?

Upvotes: 2

Views: 165

Answers (2)

cforbish
cforbish

Reputation: 8809

Simple answer:

:exec '!'.getline('.')

Upvotes: 1

FDinoff
FDinoff

Reputation: 31419

To run the command on the line your cursor is on you can yank the line into you clipboard. Type :! to open up the ex command line and then use <C-r>" to paste the command onto the command line.

So with the cursor on the line type and hit enter.

yy:!<C-r>"

Take a look at :h <c-r>.

CTRL-R {0-9a-z"%#:-=.}                  *c_CTRL-R* *c_<C-R>*
        Insert the contents of a numbered or named register.  Between
        typing CTRL-R and the second character '"' will be displayed
        to indicate that you are expected to enter the name of a
        register.
        The text is inserted as if you typed it, but mappings and
        abbreviations are not used.  Command-line completion through
        'wildchar' is not triggered though.  And characters that end
        the command line are inserted literally (<Esc>, <CR>, <NL>,
        <C-C>).  A <BS> or CTRL-W could still end the command line
        though, and remaining characters will then be interpreted in
        another mode, which might not be what you intended.
        Special registers

Upvotes: 2

Related Questions