vim
Inserimento di testo
Ricerca…
Lasciando la modalità di inserimento
Comando | Descrizione |
---|---|
<Esc> | Lascia la modalità di inserimento, attiva gli autocomandi e le abbreviazioni |
<C-[> | Esatto anche di <Esc> |
<Cc> | Lascia la modalità di inserimento, non attiva gli autocommands |
Ad alcune persone piace usare una coppia relativamente rara di caratteri come jk
come scorciatoia per <Esc>
o <C-[>
che può essere difficile da raggiungere su alcune tastiere:
inoremap jk <Esc>l
Diversi modi per entrare nella modalità di inserimento
Comando | Descrizione |
---|---|
a | Aggiungi testo seguendo la posizione corrente del cursore |
A | Aggiungi testo alla fine della riga corrente |
i | Inserisci il testo prima della posizione corrente del cursore |
I | Inserisci il testo prima del primo carattere non vuoto della riga corrente |
gI | Inserisci il testo nella prima colonna della linea del cursore |
gi | Inserisci il testo nella stessa posizione in cui è stato lasciato l'ultima volta in modalità Inserisci |
O | Apri una nuova riga sopra la riga corrente e aggiungi del testo (CAPITALE O ) |
o | Apri una nuova riga sotto la riga corrente e aggiungi del testo (minuscola o ) |
s o cl | Elimina il carattere sotto il cursore e passa alla modalità di inserimento |
S o cc | Elimina l'intera riga e passa alla modalità di inserimento |
C | Elimina dalla posizione del cursore fino alla fine della riga e avvia la modalità di inserimento |
c{motion} | Elimina {motion} e avvia la modalità di inserimento (vedi Movimento base ) |
Inserisci scorciatoie della modalità
Comando | Descrizione |
---|---|
<Cw> | Elimina la parola prima del cursore |
<Ct> | Rientro della linea corrente con una shiftwidth |
<Cd> | Linea corrente nonindirata con una shiftwidth |
<Cf> | reindent la linea, (sposta il cursore sulla posizione di rientro automatico) |
<Ca> | Inserisci il testo inserito in precedenza |
<Ce> | Inserisci il carattere qui sotto |
<Ch> | Elimina un carattere indietro |
<Cy> | Inserisci il carattere sopra |
<Cr>{register} | Inserisci il contenuto di {register} |
<Co>{normal mode command} | eseguire {normal mode command} senza uscire dalla modalità di inserimento |
<Cn> | Prossima opzione di completamento automatico per la parola corrente |
<Cp> | Opzione di completamento automatico precedente per la parola corrente |
<Cv> | Inserisci un carattere con il suo valore ASCII in decimale |
<Cv>x | Inserisci un carattere con il suo valore ASCII in esadecimale |
<Cv>u | Inserisci un carattere con il suo valore unicode in esadecimale |
<Ck> | Inserisci un digramma |
Esecuzione di comandi normali dalla modalità di inserimento
In modalità inserimento, premere <Co>
per abbandonare temporaneamente la modalità di inserimento ed eseguire un comando normale una tantum.
Esempio
<Co>2w
salta alla seconda parola a sinistra e torna alla modalità di inserimento.
Nota: ripetere con .
ripeterà le azioni solo dal ritorno alla modalità di inserimento
Ciò consente alcune mappature utili, ad es
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
Ora ctrl + a posiziona il cursore all'inizio della riga e ctrl + e - alla fine della riga. Queste mappature sono utilizzate di default in readline
, quindi potrebbero essere utili per le persone che vogliono coerenza.
Inserisci il testo in più righe contemporaneamente
Premi Ctrl + v per entrare in modalità blocco visivo.
Usa ↑ / ↓ / j / k per selezionare più linee.
Premi Maiusc + i e inizia a digitare ciò che desideri.
Dopo aver premuto Esc , il testo verrà inserito in tutte le linee selezionate.
Ricorda che Ctrl + c non è equivalente al 100% a Esc e non funzionerà in questa situazione!
Ci sono lievi variazioni di Shift + i che puoi premere mentre sei in modalità blocco visivo:
Chiave | Descrizione |
---|---|
c o s | Elimina il blocco selezionato e attiva la modalità di inserimento |
C | Elimina le linee selezionate (dal cursore fino alla fine) e attiva la modalità di inserimento |
R | Elimina le linee selezionate e attiva la modalità di inserimento |
UN | Aggiungi alle linee selezionate, con la colonna alla fine della prima riga |
Si noti inoltre che premendo . dopo un'operazione di blocco visivo ripeterà l'operazione in cui si trova il cursore!
Incolla il testo usando il comando "incolla" del terminale
Se si utilizza il comando incolla dal programma di emulazione di terminale, Vim interpreterà il flusso di caratteri come se fossero stati digitati. Ciò causerà tutti i tipi di effetti indesiderati, in particolare la cattiva indizione.
Per risolvere il problema, dalla modalità di comando:
:set paste
Quindi passare alla modalità di inserimento, con i , per esempio. Notare che la modalità è ora -- INSERT (paste) --
. Ora incollare con il comando emulatore di terminale o con il mouse. Al termine, vai in modalità comando, con Esc ed esegui:
:set nopaste
C'è un modo più semplice, quando si vuole incollare solo una volta. Metti questo nel tuo .vimrc (o usa il plugin unimpaired.vim ):
function! s:setup_paste() abort
set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction
nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O
Ora si può semplicemente premere yo
per incollare il codice sotto il cursore, quindi <Esc>
per tornare alla modalità normale / nopaste.
Incollare da un registro mentre si è in modalità di inserimento
In modalità di inserimento, puoi usare <Cr>
per incollare da un registro, che viene specificato dalla prossima sequenza di tasti. <Cr>"
per esempio paste dal registro senza nome ( "
).
Vedi :help registers
.
Comandi e scorciatoie di inserimento avanzati
Ecco un rapido riferimento per l'inserimento avanzato, la formattazione e il filtraggio di comandi / scorciatoie.
Comando / Shortcut | Risultato |
---|---|
g +? + m | Eseguire la codifica rot13, in movimento m |
n + ctrl + a | + n al numero sotto il cursore |
n + ctrl + x | - n al numero sotto il cursore |
g + q + m | Formatta linee di movimento m in larghezza fissa |
: r ce w | Linee centrali nell'intervallo da r a larghezza w |
: r i i | Sinistra allinea le righe nell'intervallo r con la rientazione i |
: r ri w | A destra allinea le linee nell'intervallo da r a larghezza w |
! mc | Filtra le linee di movimento m attraverso il comando c |
n !! c | Filtra n linee attraverso il comando c |
: r ! c | Filtra le linee r attraverso il comando c |
Disattiva il rientro automatico per incollare il codice
Quando si incolla il testo attraverso un emulatore di terminale, la funzione di indentazione automatica può distruggere il rientro del testo incollato.
Per esempio:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
sarà incollato come:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
In questi casi, utilizzare l'opzione paste
/ nopaste
per disabilitare / abilitare la funzione di indentazione automatica:
:set paste
:set nopaste
In aggiunta a questo, c'è un approccio più semplice al problema: aggiungi la seguente riga nel tuo .vimrc:
set pastetoggle=<F3>
E se vuoi incollare come è dagli appunti. Basta premere F3
in modalità di insert
e incollare. Premere nuovamente F3
per uscire dalla modalità paste
.