Scrivi l'area selezionata sul file


13

Vorrei scrivere un'area selezionata visivamente su un file.

Per esempio:

prefix [sample text
more text] suffix

[] è il blocco selezionato che dovrebbe essere preso, risultante in un nuovo file contenente:

sample text
more text

Il normale wcomando utilizza le righe, quindi '<,'>w! /tmp/testincluderebbe il prefisso / suffisso (e `<,`>w! /tmp/testnon è consentito).

Risposte:


8

Innanzitutto, copia (anche chiamato 'yank' in vim parlance) la tua selezione visiva nel registro di tua scelta. Ad esempio, per copiare per registrare 'z', effettuare la selezione visiva e quindi digitare "zy.

Nel caso che dai, potresti farlo senza muovere il cursore, posizionando il cursore sulla prima parentesi quadra e digitando v%"zy.

Ripartizione: v-> avvia la selezione visiva; %-> passa alla parentesi graffa corrispondente; "z-> usa il registro 'z'; y-> yank (copia) la selezione (in questo caso, nel registro 'z').

Dopo aver copiato la selezione visiva per registrare 'z', andare alla riga di comando e digitare

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

Se si desidera aggiungere il testo, anziché sovrascriverlo, è possibile utilizzare il flag "a" come segue

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

Quindi questo significa che non esiste un comando incorporato che può fare questo?
Laktak,

@laktak Non potrei trovare ... A split()? getreg(.., 1, 1)restituisce un elenco, quindi split()non è necessario.
muru,

Grazie - sei troppo veloce :) Ho appena realizzato il mio errore e ho modificato il commento mentre rispondevi.
Laktak,

3

Puoi anche copiare i tuoi contenuti e creare una nuova finestra

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

Quindi puoi salvare come vuoi


0
  1. Vim help dice (: h 10.3):

    Nota: quando si utilizza la modalità Visual per selezionare parte di una riga o si utilizza CTRL-V per selezionare un blocco di testo, i comandi dei due punti verranno comunque applicati a intere righe. Questo potrebbe cambiare in una versione futura di Vim.

  2. Il plugin vis (# 1195) di Charles Campbell offre il comando :B {cmd}di applicare un {cmd}solo alla selezione visiva (blocco).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.