La modalità di inserimento Vi

Modalità di inserimento Vi
Lo scopo della modalità Vi non è di essere un sostituto completo di Vim e supportare tutte le sue funzionalità. Il suo scopo è rendere disponibile la modifica del testo alla Vim, e le abitudini ad essa legate, ai programmi che usano l'editor di testo come editor interno.
La modalità Vi punta ad integrarsi bene con il programma e devia dal comportamento di Vim quando ciò ha senso. Per esempio, :w aprirà una finestra di salvataggio nella modalità Vi di .
Per abilitare la modalità di inserimento Vi per tutte le nuove viste, vai a Impostazioni Configura Modifica Modalità di inserimento Vi. Da questa scheda puoi impostare le opzioni per la modalità di inserimento Vi, e modificarne la mappatura della tastiera. La modalità di inserimento Vi può essere attivata con l'impostazione Modalità di inserimento Vi nel menu Modifica (la scorciatoia predefinita è Meta V, dove Meta è normalmente il tasto Windows).
Molti comandi da tastiera della modalità Vi sono diversi con le maiuscole, al contrario della maggior parte delle scorciatoie da tastiera di . Ciò vuol dire che y e Y sono due comandi diversi. Per inserire il comando y (copia), assicurati che Bloc Maiusc sia disattivato e premi Y. Per inserire il comando Y (copia fino alla fine della riga), Y.
Ciò non vale per i comandi che usano il tasto , che possono essere inseriti indipendentemente dalla modalità di Bloc Maiusc e senza premere . Tuttavia, alcuni comandi richiedono l'uso di combinazioni di un tasto con un altro tasto con versione maiuscola. Per esempio, per inserire W, h (passa alla vista divisa a destra), assicurati che Bloc Maiusc sia disattivato, premi W, rilascia, e quindi premi H.

Incompatibilità con Vim
Ci sono solo alcune poche funzionalità della modalità Vi di che non sono compatibili con Vim (non contando quelle mancanti). Sono elencate sotto con le rispettive motivazioni.
: U e R sono il comando rifai.
Vim: R è il comando rifai normale, U è usato per annullare tutte le ultime modifiche su una riga.
Il motivo di far funzionare U come azione di rifai nella modalità Vi di è che la scorciatoia R è normalmente già presa dalla funzione di sostituzione di (ricerca e sostituzione). Normalmente, la modalità Vi non si sovrapporrà alle scorciatoie di (questo si può modificare in Impostazioni Configura Modifica Modalità di inserimento Vi), quindi un'azione di rifai va resa disponibile anche con una normale pressione di un tasto. Inoltre, il comportamento del comando U in Vim non si adatta bene al sistema di annullamento interno di , quindi sarebbe comunque difficile da supportare.
: print mostra la finestra di Stampa.
Vim: print stampa le righe dell'intervallo dato, come nel suo antenato ed.
I comandi come :print sono disponibili non solo nella modalità Vi, ma anche per gli utenti del normale; quindi il comando :print apre la finestra di stampa, seguendo il principio di minima sorpresa invece di imitare il comportamento di Vim.
: Y copia fino alla fine della riga.
Vim: Y copia tutta la riga, come yy.
Il comportamento di Vi per il comando Y è in pratica un errore. Sia per il comando di modifica che di cancellazione, cc/dd eseguiranno la loro azione sulla riga attuale, mentre C/D funzioneranno dalla colonna del cursore fino alla fine della riga. Tuttavia, sia yy che Y copiano la riga attuale. Nella modalità Vi di , Y copierà fino alla fine della riga. Ciò è descritto come più logico nella documentazione di Vim.
: O e o aprono [tot] nuove righe e mettono in modalità di inserimento
Vim: O e o aprono una nuova riga e inseriscono del testo [tot] volte all'uscita dalla modalità di inserimento.
Questo è motivato essenzialmente dalla confusione di molte persone da parte di questo comportamento su un canale IRC su Vim (#vim su freenode).

Cambiare modalità
La modalità normale permette di inserire comandi per navigare o modificare un documento, ed è quella predefinita. Puoi tornarci da qualsiasi altra modalità premendo .
La modalità visuale permette di evidenziare del testo in un documento. La maggior parte dei comandi sono validi anche in questa modalità. Puoi attivarla premendo v per selezionare caratteri o V per selezionare righe.
La modalità di inserimento permette di modificare il documento direttamente. Puoi attivarla premendo i o uno dei diversi comandi elencati sotto.
La modalità di comando invoca la riga di comando di , permettendo di eseguire molti comandi disponibili nelle implementazioni di Vi oltre ad alcuni specifici di . Per maggiori informazioni, vedi . Per usarla, premi :, inserisci il comando e premi .

Integrazione con le funzionalità di
La modalità visuale è attivata automaticamente quando si seleziona del testo col mouse. È attivata anche quando si usano funzioni di che selezionano del testo, come Seleziona tutto (dal menu o con A).
Gli indicatori di Vi e i segnalibri di sono integrati. Quando si crea un indicatore in modalità Vi, viene creato un segnalibro di corrispondente e appare nel menu Segnalibri. Allo stesso modo, quando si crea un segnalibro di , viene anche creato un indicatore di Vi alla colonna 0.

Comandi supportati nelle modalità normale e visuale
a	Entra nella modalità di inserimento; aggiungi dopo il cursore
A	Entra nella modalità di inserimento; aggiungi dopo la riga
i	Entra nella modalità di inserimento; aggiungi prima del cursore
Inserisci	Entra nella modalità di inserimento; aggiungi prima del cursore
I	Entra nella modalità di inserimento; aggiungi prima del primo carattere non vuoto sulla riga
gi	Entra nella modalità di inserimento; aggiungi prima del posto dove si è lasciata l'ultima modalità di inserimento
v	Entra nella modalità visuale; seleziona caratteri
V	Entra nella modalità visuale; seleziona righe
v	Entra nella modalità visuale; seleziona blocchi
gb	Entra nella modalità visuale; riseleziona l'ultima selezione
o	Apre una nuova riga sotto l'attuale
O	Apre una nuova riga sopra l'attuale
J	Unisci righe
c	Modifica: fai seguire un movimento per cancellare e entrare nella modalità di inserimento
C	Modifica fino alla fine della riga: cancella fino alla fine della riga ed entra in modalità di inserimento
cc	Modifica riga: cancella la riga e entra nella modalità di inserimento
s	Carattere sostitutivo
S	Riga sostitutiva
dd	Cancella riga
d	Fai seguire un movimento per cancellare
D	Cancella fino alla fine della riga
x	Cancella il carattere alla destra del cursore
Elimina	Cancella il carattere alla destra del cursore
X	Cancella il carattere alla sinistra del cursore
gu	Fai seguire un movimento per mettere in minuscolo
guu	Metti la riga attuale in minuscolo
gU	Fai seguire un movimento per mettere in maiuscolo
gUU	Metti la riga attuale in maiuscolo
y	Fai seguire un movimento per copiare
yy	Copia riga
Y	Copia riga
p	Incolla dopo il cursore
P	Incolla prima del cursore
]p	Incolla dopo il cursore rientrato
[p	Incolla prima del cursore rientrato
r	Fai seguire un carattere per sostituire il carattere dopo il cursore
R	Entra nella modalità di sostituzione
:	Entra nella modalità di comando
/	Cerca
u	Annulla
R	Rifai
U	Rifai
m	Imposta indicatore (può essere usato in seguito dai movimenti)
n	Trova successivo
N	Trova precedente
>>	Fai rientrare la riga
<<	Riduci il rientro della riga
>	Fai rientrare le righe
<	Riduci il rientro delle righe
F	Pagina giù
B	Pagina su
ga	Stampa il valore ASCII del carattere
.	Ripeti l'ultima modifica
==	Allinea la riga
=	Allinea le righe
~	Cambia tra versione maiuscola o minuscola del carattere attuale
S	Dividi la vista orizzontalmente
V	Dividi la vista verticalmente
W, w	Passa alla prossima finestra divisa
W, h W ←	Passa alla finestra divisa a sinistra
W, l W →	Passa alla finestra divisa a destra
W, k W ↑	Passa alla finestra divisa sopra
W, j W ↓	Passa alla finestra divisa sotto

Movimenti supportati
Questi possono essere usati per spostarsi in un documento nelle modalità normale o visuale, o in congiunzione con uno dei comandi sopracitati. Possono essere preceduti da un conto, che indica quanti movimenti effettuare.
h	Sinistra
←	Sinistra
	Sinistra
j	Giù
↓	Giù
k	Su
↑	Su
l	Destra
→	Destra
Spazio	Destra
$	Fine riga
Fine	Fine riga
0	Primo carattere della riga (colonna 0)
Home	Primo carattere della riga
^	Primo carattere non vuoto della riga
f	Fai seguire un carattere da spostare alla destra del cursore
F	Fai seguire un carattere da spostare alla sinistra del cursore
t	Fai seguire un carattere da spostare alla destra del cursore, mettendo il cursore sul carattere precedente
T	Fai seguire un carattere da spostare alla sinistra del cursore, mettendo il cursore sul carattere precedente
gg	Prima riga
G	Ultima riga
w	Parola successiva
W	Parola successiva separata da spazi
b	Parola precedente
B	Parola precedente separata da spazi
e	Fine della parola
E	Fine della parola separata da spazi
ge	Fine della parola precedente
gE	Fine della parola precedente separata da spazi
|	Fai seguire il numero della colonna a cui spostarsi
%	Fai seguire un elemento a cui spostarsi
`	Indicatore
‘	Primo carattere non di spaziatura della riga su cui è l'indicatore
[[	Quadra aperta precedente
]]	Quadra aperta successiva
[]	Quadra chiusa precedente
][	Quadra chiusa successiva
I	Salta in avanti alla posizione successiva
O	Salta indietro alla posizione precedente
H	Vai alla prima riga della schermata
M	Vai al centro della schermata
L	Vai all'ultima riga della schermata
%percentuale	Vai alla percentuale specificata del documento
gk	Sali di una riga visualmente (quando si usa il ritorno a capo dinamico)
gj	Scendi di una riga visualmente (quando si usa il ritorno a capo dinamico)
←	Sposta una parola a sinistra
→	Sposta una parola a destra

Oggetti di testo supportati
Questi si possono usare per selezionare certe porzioni di un documento.
iw	Parola interna: parola con spazi inclusi
aw	Una parola: parola senza spazi
i"	Dalle virgolette doppie (") precedenti alle successive, virgolette incluse
a”	Dalle virgolette doppie (") precedenti alle successive, virgolette escluse
i'	Dalle virgolette singole (') precedenti alle successive, virgolette incluse
a'	Dalle virgolette singole (') precedenti alle successive, virgolette escluse
i(	Dalla parentesi aperta precedente [(] alla chiusa successiva [)], parentesi incluse
a(	Dalla parentesi aperta precedente [(] alla chiusa successiva [)], parentesi escluse
i[	Dalla parentesi quadra aperta precedente ([) alla chiusa successiva (]), parentesi quadre incluse
a[	Dalla parentesi quadra aperta precedente ([) alla chiusa successiva (]), parentesi quadre escluse
i{	Dalla parentesi graffa aperta precedente ({) alla chiusa successiva (}), parentesi graffe incluse
a{	Dalla parentesi graffa aperta precedente ({) alla chiusa successiva (}), parentesi graffe escluse
i<	Dalla parentesi angolata aperta precedente (<) alla chiusa successiva (>), parentesi angolate incluse
a<	Dalla parentesi angolata aperta precedente (<) alla chiusa successiva (>), parentesi angolate escluse
i`	Dall'accento grave precedente (`) al successivo, accenti inclusi
a`	Dall'accento grave precedente (`) al successivo, accenti esclusi

Comandi supportati nella modalità di inserimento
D	Riduci rientro
T	Fai rientrare
E	Inserisci da sotto
Y	Elimina parola
W	Elimina parola
U	Cancella riga
J	Nuova riga
H	Elimina carattere all'indietro
Home	Vai al primo carattere del documento
R n	Inserisce i contenuti del registro n
O, comando	Entra nella modalità normale per un solo comando
A	Incrementa il numero attualmente selezionato
X	Decrementa il numero attualmente selezionato

L'oggetto di testo tra virgole
Questo oggetto non è presente in Vim. L'oggetto di testo tra virgole facilita la modifica di elenchi di parametri in linguaggi simili al C e in altri elenchi separati da virgole. È sostanzialmente l'area tra due virgole o tra una virgola e una parentesi. In questa riga mostrata nell'illustrazione, sono evidenziati i tre intervalli coperti da questo oggetto di testo.
Un esempio di oggetto di testo tra virgole
Un esempio di oggetto di testo tra virgole
Intervalli degli oggetti di testo tra virgole. Se il cursore è per esempio su arg2, premere ci (cambia tra virgole) eliminerebbe double arg2 e posizionerebbe il cursore tra le due virgole in modalità di inserimento. Un modo molto comodo per cambiare i parametri di una funzione.

Funzionalità mancanti
Come già menzionato, l'obbiettivo della modalità Vi di non è supportare il 100% delle funzionalità di Vim.