Attualmente sto utilizzando MacVim e mi piacerebbe stampare tutti i file nel mio albero di lavoro. C'è un modo per farlo semplicemente, magari usando il comando hardcopy
?Stampa ricorsiva di tutti i file da Vim
risposta
Un modo conveniente per eseguire un comando per un gruppo di file è quello di raccogliere l'elenco dei loro nomi , definirlo come il nuovo elenco di argomenti (vedere :help arglist
), e quindi iterare il comando su tali file nell'elenco degli argomenti.
Per eseguire il primo passaggio, utilizzare il comando
:args
con jolly file corrispondenti desideri. Ad esempio,:args ./**/*
imposta la lista degli argomenti per i nomi di tutti i file nella directory corrente e nelle sue sottodirectory; Allo stesso modo,
:args /tmp/**/*.{c,h}
seleziona tutti
.c
e.h
i file in/tmp
e le sue sottodirectory. Per dettagli su sulla sintassi dei caratteri jolly, vedere:help wildcard
.Se percorso alla radice di un sottoalbero che contiene i file di stampa è sconosciuta in anticipo ed è costruito da uno script, utilizzare il comando
:exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)'))
dove si suppone che la variabile
p
per contenere il percorso di quel root directory.Per l'invio di file nella lista degli argomenti alla stampante, eseguire il comando
:hardcopy
per quei file utilizzando il comando:argdo
,:argdo hardcopy!
Il
!
specificatore sopprime la finestra di dialogo modale per la selezione di stampa parametri.Un comando più complicato può essere utilizzato per stampare ciascun file su un documento PostScript separato situato nella stessa directory del file .
:argdo hardcopy! >%:p.ps
Qui il nome di un file stampato è concatenato con il suffisso
.ps
per ottenere il nome di un file PostScript corrispondente (vedi:help cmdline-special
).Per accelerare il comando
:argdo
-argument, Vim ignora l'eventoSyntax
autocomando aggiungendolo alla listaeventignore
. Ciò implica che seSyntax
autocomandi non fossero stati eseguiti per un file nella lista degli argomenti prima che il comando è:hardcopy
:argdo
ne, il corrispondente documento stampato non avrebbero un evidenziazione della sintassi (in caso disyntax:y
set inprintoptions
). Per eseguire gli autocomandiSyntax
per tutti i file nell'elenco degli argomenti, utilizzare prima il seguente comando .:argdo set ei-=Syntax | do Syntax
Per fare questo nello stesso periodo, come la stampa, concatenare i comandi:
:argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps
Come al solito, molto più approfondito – sehe
Grazie per le risposte ragazzi. Questo funziona. –
@ib. Domanda successiva su questo. Non riesco a ottenere l'evidenziazione della sintassi per funzionare quando utilizzo questo comando. Da quello che posso dire, lo fa per il primo ma nessuno dei successivi stampa su PostScript. Chiedendo, perché è quello? Ho provato 'set printoptions = syntax: y" 'nel mio vimrc ma non sembra fare il trucco –
Modifica Mi dispiace, ho frainteso prima.
Per stampare tutto, dicono PHP e C# file nella directory di lavoro:
:args ./*.{cs,php} **/*.{cs,php}
:argdo ha
Semplicemente ': args **/*. {Cs, php}' lo farebbe, IIRC. – fachexot
- 1. Vim: crea segni su tutti i file?
- 2. Stampa panda TUTTI i dattilografi
- 3. Applicazione di un'opzione a tutti i file aperti in Vim
- 4. Stampa Unicode in vim
- 5. Stampa simultaneamente tutti i file in una directory con gnuplot?
- 6. Utilizzando il comando VIM su tutti i file aperti
- 7. Disabilitazione ricorsiva di tutti i bambini di un elemento
- 8. Stampa tutti i campi con AWK separati da OFS
- 9. Stampa tutti i nomi std :: locale (Windows)
- 10. Aggiorna tutti i file nel buffer dal disco in vim
- 11. Vim ricerca attraverso tutti i buffer esistenti
- 12. Stampa tutti i bean Spring caricati
- 13. Elimina cartella e tutti i file/sottodirectory
- 14. Ottieni un elenco di tutti i file in una directory (ricorsiva)
- 15. stampa tutti i file in una determinata cartella e sottocartelle senza usare la ricorsione/pila
- 16. valori di stampa di tutti i campi di una struttura
- 17. Apri tutti i file in una cartella
- 18. Vim: Sostituisci tutti i punti tranne l'ultimo di una riga
- 19. Ricerca file ricorsiva (PHP)
- 20. Groovy (File IO): trovare tutti i file e restituire tutti i file - il modo Groovy
- 21. Come creare una funzione ricorsiva per copiare tutti i file e le cartelle
- 22. Rimozione di tutti i commenti da un file .r?
- 23. Salva tutti i file di immagine da un sito web
- 24. Download di tutti i file da un server FTP
- 25. LINUX: link di tutti i file da uno all'altro directory
- 26. Stampa tutti i possibili sottoinsiemi di un elenco
- 27. Stampa tutti i caratteri di un carattere in MS Word
- 28. vim - Come chiudere tutti i buffer nella scheda corrente?
- 29. vim regex incrementa tutti i numeri di 1
- 30. Come elencare tutti i segnalibri in NERDTree di VIM?
': qa' si chiuderà tutti i file aperti ... Mi chiedo se' a' può modificare ? –