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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow