Écrire la zone sélectionnée dans le fichier

13

Je voudrais écrire une zone sélectionnée visuellement dans un fichier.

Par exemple:

prefix [sample text
more text] suffix

[] est le bloc sélectionné qui doit être pris, résultant en un nouveau fichier contenant:

sample text
more text

La wcommande normale utilise des lignes et '<,'>w! /tmp/testinclurait donc le préfixe / suffixe (et `<,`>w! /tmp/testn'est pas autorisée).

laktak
la source

Réponses:

8

Tout d'abord, copiez (également appelé «yank» dans le langage vim) votre sélection visuelle dans le registre de votre choix. Par exemple, pour copier pour enregistrer «z», effectuez votre sélection visuelle, puis tapez "zy.

Dans le cas que vous donnez, vous pouvez le faire sans déplacer le curseur, en plaçant le curseur sur la première accolade carrée, puis en tapant v%"zy.

Répartition: v-> démarrer la sélection visuelle; %-> passer à l'accolade correspondante; "z-> utiliser le registre 'z'; y-> taper (copier) la sélection (dans ce cas, dans le registre 'z').

Une fois que vous avez copié votre sélection visuelle pour enregistrer «z», accédez à la ligne de commande et tapez

call writefile(getreg('z', 1, 1), "some-file")

Si vous souhaitez ajouter le texte, plutôt que l'écraser, vous pouvez utiliser l'indicateur "a" comme suit

call writefile(getreg('z', 1, 1), "some-file", "a") 
muru
la source
Cela signifie donc qu'aucune commande intégrée ne peut le faire?
laktak
@laktak Pas que je puisse trouver ... A split()? getreg(.., 1, 1)renvoie une liste, donc un split()n'est pas nécessaire.
muru
Merci - vous êtes trop rapide :) Je viens de réaliser mon erreur et j'ai modifié le commentaire pendant que vous répondiez.
laktak
3

Vous pouvez également copier votre contenu et créer une nouvelle fenêtre

Ctrl-w n ........... create a new window
p .................. paste

Ensuite, vous pouvez enregistrer comme vous le souhaitez

SergioAraujo
la source
0
  1. L'aide de Vim dit (: h 10.3):

    Remarque: Lorsque vous utilisez le mode visuel pour sélectionner une partie d'une ligne ou utilisez CTRL-V pour sélectionner un bloc de texte, les commandes deux-points s'appliquent toujours aux lignes entières. Cela pourrait changer dans une future version de Vim.

  2. Le plugin vis (# 1195) de Charles Campbell offre la commande :B {cmd}pour appliquer un {cmd}uniquement à la sélection visuelle (bloc).

Hotschke
la source