maneira rápida de enviar linha atual para o shell no Vim

2

Diga que a linha atual no Vim contém:

ls /home

(ou qualquer comando shell). Assim, o que é uma maneira rápida de enviar esta linha para o shell (bash) e ler os resultados no Vim? E sem usar plug-ins.

    
por antonio 12.10.2013 / 16:57

1 resposta

5

A maneira mais fácil é colocar :! na frente da linha (com I:! ), então yy para extrair a linha para o registrador não nomeado e, finalmente, usar @" para chamar o não-nomeado ( " ) registrar como uma macro. Para vim, isso é exatamente equivalente a digitar

:!ls /home

no modo normal. Se, como eu, você tem ; e : trocados no seu .vimrc para o modo normal, você terá que inserir um ponto-e-vírgula.

Provavelmente, é possível alterar o registro no local, em vez de adicioná-lo a uma linha real.

Também é possível fazer isso por y$ yanking até o final da linha (sem a edição acima) e, em seguida, digitando

:!<c-r>"

... ( <c-r> que significa Ctrl + r ) que será expandido para

:!ls /home

(ou qualquer que seja o comando que você arrancou). Você precisa usar y$ em vez de yy , porque senão expandirá para

:ls /home^M

^M lá representando a nova linha; isso é fácil de apagar com um único backspace.

Esse segundo método pode ser um pouco mais rápido, mas qualquer coisa que envolva a tecla Ctrl parece um pouco diferente de mim.

    
por 12.10.2013 / 17:49