2017-09-21 3 views
1

Si j'exécute une commande shell depuis l'intérieur de Vim, disons :!ls, sa sortie sera toujours visible dans le shell après avoir quitté Vim.Comment écrire du tampon Vim à la console?

Je veux écrire des lignes sélectionnées de mon tampon courant dans Vim à l'interpréteur de commandes d'une manière semblable. Autrement dit, ces lignes devraient être visibles sur la console après avoir quitté Vim. Comment faire ça?

Pour écrire des lignes 4-10 par exemple, cette commande n'a pas fait cela: :4,10w !tee

+0

Pourquoi ne pas utiliser ': cat%'? – dlmeetei

+0

@dlmeetei Et si je ne veux écrire que certaines lignes sélectionnées (par exemple les lignes 4 à 10) du tampon? Peut-être que je veux marquer visuellement ces lignes et ensuite les écrire? –

+0

Super, Maintenant, vous avez mis à jour la question en conséquence. – dlmeetei

Répondre

1

Qu'en est simple, chat ting le fichier

:!cat % 

(comme oposed à :%!cat qui imprimerait seulement tampon)


Imprimer uniquement les lignes sélectionnées:

:execute '!sed -n ' . line("'<") . ',' . line("'>") . 'p %' 

Vous pouvez définir une commande pour cette

command! -range PrintSelected :execute '!sed -n ' . line("'<") . ',' . line("'>") . 'p %' 
+0

Cela fonctionne! Que se passe-t-il si je veux écrire seulement certaines lignes sélectionnées (par exemple les lignes 4 à 10) du tampon? Peut-être que je veux marquer visuellement ces lignes et ensuite les écrire? –

0

Pour appuyer sur la réponse de @ Pacholik (et répondre à votre question élargie des commentaires), pour que la liste de la sélection visuelle (ou tout autre gamme de lignes), vous pouvez utiliser sed:

:execute printf('!sed -n %d,%dp %%', line("'<"), line("'>"))