In Vim, qual è il comando per correggere il rientro di tutte le righe?
Spesso copio e incollo il codice in un terminale remoto e faccio incasinare tutto. Voglio risolvere questo problema in un colpo solo.
In Vim, qual è il comando per correggere il rientro di tutte le righe?
Spesso copio e incollo il codice in un terminale remoto e faccio incasinare tutto. Voglio risolvere questo problema in un colpo solo.
Risposte:
=
, il comando indent può prendere dei movimenti. Quindi, gg
per ottenere l'inizio del file, =
al rientro, G
alla fine del file, gg=G
.
''
(due virgolette singole) ti riporta al punto in cui eri quindi gg=G''
dovrebbe rientrare e poi tornare.
Prima di incollare nel terminale, prova :set paste
e poi :set nopaste
dopo aver finito. Questo disattiverà il rientro automatico, il ritorno a capo e altre funzionalità che rovinano la tua pasta.
modifica: Inoltre, dovrei sottolineare che un risultato molto migliore rispetto al =
rientro di solito può essere ottenuto utilizzando un programma esterno. Ad esempio, corro :%!perltidy
sempre. astyle
, cindent
ecc. possono anche essere utilizzati. E, naturalmente, è possibile mappare quelli su un tratto di chiave e mappare quelli diversi sulla stessa sequenza di tasti a seconda del tipo di file.
equalprg
opzione in un ftplugin per utilizzare un filtro esterno per il =
rientro, piuttosto che un keybinding personalizzato.
formatpgm
con ordine e stile e poi gq
. Ecco alcuni esempi dei miei .vimrc
: au FileType xml set fp=tidy\ -q\ -i\ -xml
eau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Se vuoi reindirizzare il blocco in cui ti trovi senza dover digitare alcun accordo, puoi fare:
[[=]]
=aB
ciò che non sposta affatto il cursore.
[[=]]
necessari 5 accordi :(
Il padrone di tutti i comandi è
gg=G
Questo rientra l'intero file!
Di seguito sono riportati alcuni dei comandi semplici ed eleganti utilizzati per indentare rapidamente le linee in Vim o gVim.
Per rientrare in tutte le righe sotto la riga corrente
=G
Per rientrare nella riga corrente
==
Per rientrare le n
righe sotto la riga corrente
n==
Ad esempio, per rientrare 4 righe sotto la riga corrente
4==
Per rientrare in un blocco di codice, vai su una delle parentesi graffe e usa il comando
=%
È possibile utilizzare l'applicazione / utilità ordinata per indentare i file HTML e XML e funziona abbastanza bene nel rientro di quei file.
Prettify un file XML
:!tidy -mi -xml %
Prettify un file HTML
:!tidy -mi -html %
premi Esc e digita velocemente le seguenti combinazioni:
gg=G
1G=G
. Questo dovrebbe rientrare in tutte le righe del file. 1G
ti porta alla prima riga, =
avvierà il rientro automatico e la finale G
ti porterà all'ultima riga nel file.
1gg=G
In Vim, utilizzare :insert
. Ciò manterrà tutta la formattazione e non eseguirà il rientro automatico. Per ulteriori informazioni help :insert
.
se non si desidera utilizzare :set paste
, fare clic con il tasto centrale set nopaste
, è anche possibile incollare il contenuto degli Appunti:
"*p
"+p
In questo modo non è necessario uscire dalla modalità normale. se devi incollare +
o *
dipende da come hai selezionato il testo, vedi :help quoteplus
.
vim-autoformat formatta i tuoi file sorgente usando programmi esterni specifici per la tua lingua, ad esempio la gemma "rbeautify" per i file Ruby, il pacchetto npm "js-beautify" per JavaScript.
Per file C ++ complessi vim non ottiene sempre la formattazione corretta quando si utilizza il =
comando di filtro di vim . Quindi per tali situazioni è meglio usare un formattatore C ++ esterno come astyle (o non giustificato ), ad esempio:
:%!astyle
La funzione '=' di Vim usa il suo formattatore interno di default (che non sempre risolve le cose) ma si può anche impostarlo usando un formattatore esterno, come astyle, impostandolo in modo appropriato come discusso in questa domanda .
Per i file XML, utilizzo questo comando
:1,$!xmllint --format --recover - 2>/dev/null
Devi avere xmllint installato (pacchetto libxml2-utils)
(Fonte: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
Puoi creare una mappatura per fare questo per te.
Questo rientra automaticamente nell'intero file e mantiene il cursore nella posizione in cui ti trovi:
nmap <leader>ai mzgg=G`z
Per vi Editor, utilizzare: insert. Ciò manterrà tutta la formattazione e non inserirà il rientro automatico. Una volta terminato, premi Esc per visualizzare il file formattato effettivo, altrimenti vedrai alcuni caratteri inutili. come ^ I es .:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Basta andare in modalità visiva in vim e selezionare dalle linee su e giù dopo aver selezionato basta premere =, Tutta la linea selezionata verrà rientrata.
ggvG=
quando puoi gg=G
. Qual era lo scopo di rendere visibile il movimento? Questo vale per tutte le azioni che prendono dei movimenti.