Vim: 231 comandi chiave
Nota che qualsiasi ^ che precede un carattere significa che dovresti mantenere il controllo durante la digitazione di quel carattere
mbomayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0wmbyiwo@f @d^V^[@z ^["fc0"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0dd`bAe^[0@e
Passaggi per poter eseguire anche questo!
- Copia la linea in Vim
- genere
:s/\^V/<Ctrl-V><Ctrl-V>/g
e premi Invio (i due s dovrebbero darti un blu ^ V)
- genere
:s/\^R/<Ctrl-V><Ctrl-R>/g
e premi Invio (dovresti vedere blu ^ Rs ora)
- genere
:s/\^X/<Ctrl-V><Ctrl-X>/g
e premi Invio (dovresti vedere blu ^ Xs ora)
- genere
:s/\^O/<Ctrl-V><Ctrl-O>/g
e premi Invio
- genere
:s/\^A/<Ctrl-V><Ctrl-A>/g
e premi Invio
- genere
:s/\^\[/<Ctrl-V><Ctrl-[>/g
e premi Invio (questo comando è leggermente diverso perché avevo bisogno di sfuggire al [)
- genere
0"yy$
. Il comando è ora memorizzato nel registro y
- Imposta l'input su una riga ed esegui con
@y
Se qualcuno conosce un modo migliore per condividere il comando, per favore fatemelo sapere. So che è lungo, ma è il migliore che potrei inventare.
Input Output
La stringa di input deve essere sola su qualsiasi riga del file. 1 0 0 4 3 0 0 0 7
L'output sovrascriverà semplicemente la stringa di input 1 2 3 4 3 4 5 6 7
Spiegazione
Algoritmo
- Inizia con un numero diverso da zero, assicurati che non sia l'ultimo numero
- Trova il prossimo numero diverso da zero
- Fai la differenza. Se la risposta è negativa, è necessario diminuire per riparare l'intervallo, altrimenti incrementare per riparare l'intervallo.
- Torna al primo carattere e sostituisci ogni zero incrementando / decrementando il numero precedente.
- Ripeti fino ad arrivare all'ultimo personaggio
Macro utilizzate
@e - Controlla la fine. All'ultimo numero verrà aggiunto un e. Se il numero sotto il cursore ha una e alla fine, elimina e e termina l'esecuzione. Altrimenti, avviare un ciclo di interpolazione con @b.
mbyiwo^R"Exe@b^[0fel"ty2ldd`b@t
@b - Inizia il ciclo di interpolazione. Salvare il numero sotto il cursore per un'operazione di sottrazione (@s) e quindi trovare il termine successivo diverso da zero (@f)
mayiwo^R"^V^X ^["sy0dd`a@f
@s - Memorizza il comando di sottrazione da usare in @d. È semplicemente (val)^X
dove(val)
trova il numero all'inizio della fase di interpolazione. Questo è impostato dal comando @b.
@f - Trova il prossimo termine diverso da zero. Scrivi il valore corrente nel registro senza nome, quindi scrivi @f @d
nella riga successiva, quindi esegui @z. Questo ripeterà questo comando se il numero è zero ed eseguirà @d se non lo è.
wmbyiwo@f @d^[@z
@z - Esegui condizionale se il registro senza nome è 0. Questo comando prevede due comandi su una nuova riga nel formato command1 command2
. Se il registro senza nome è 0, command1
viene eseguito, altrimenti command2
viene eseguito. Si noti che nessuno dei comandi può contenere spazi.
IB0 B^R" ^OWB0 ^OA B0^[0*w"tyiWdd`b@t`
@t - Registro comandi temporaneo. Memorizza vari comandi per un breve periodo prima di eseguirli. Utilizzato principalmente nelle istruzioni if.
@d - Determina la direzione di interpolazione. Sottrae il primo numero nella sequenza dal numero sotto il cursore (usando @s). Se il risultato è negativo, l'interpolazione deve diminuire in modo che ^ X venga salvato in @a. Altrimenti, dovremmo incrementare in modo che ^ A venga salvato in @a. Una volta salvato, torna all'inizio di questo ciclo di interpolazione ed esegui @i per interpolare effettivamente
yiwo^V^X^R"^[0l@sa^V^A-^[0f-"ayhdd`a@i
@a - Memorizza ^A
o^X
per aumentare o diminuire durante la fase di interpolazione. Questo è impostato dal comando @d.
@i - Interpolare. Copia il numero nella posizione corrente su @x e passa al numero successivo. Se quel numero è zero, sostituirlo con @x ed eseguire @a per modificarlo correttamente su o giù, quindi ripetere questo comando. Se il numero non è zero, abbiamo raggiunto la fine di questo ciclo di interpolazione. Uno nuovo dovrebbe essere avviato con questo numero come inizio, quindi esegui @e per verificare la fine ed esegui di nuovo.
"xyiwwmbyiwocw^V^Rx^V^[@a@i @e^[@z
@x - Registro di archiviazione temporaneo. Utilizzato nel comando interpolate (@i)
Abbattere i tasti
mbo :Set b mark to current position and open a new line below to write macros
mayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0 :Write to @b and reset line
yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0 :Write to @d and reset line
mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0 :Write to @e and reset line
wmbyiwo@f @d^V^[@z ^["fc0 :Write to @f and reset line
"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0 :Write to @i and reset line
IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0 :Write to @z and reset line
dd`b :Delete this line and move cursor back to original line
Ae^[ :Append an e to the last number
0@e :Move to the beginning of the line and run
0
nostro programma può assumere un altro valore comenull
?