# 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 &kappname; 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 &kappname;.

Per abilitare la modalità di inserimento Vi per tutte le nuove viste, vai a Impostazioni Configura &kappname;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&Ctrl;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 &kde;. 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), &Shift;Y.

Ciò non vale per i comandi che usano il tasto &Ctrl;, che possono essere inseriti indipendentemente dalla modalità di Bloc Maiusc e senza premere &Shift;. Tuttavia, alcuni comandi richiedono l'uso di combinazioni di un tasto &Ctrl; con un altro tasto con versione maiuscola. Per esempio, per inserire &Ctrl;W, `h` (passa alla vista divisa a destra), assicurati che Bloc Maiusc sia disattivato, premi &Ctrl;W, rilascia, e quindi premi H.

### Incompatibilità con Vim

Ci sono solo alcune poche funzionalità della modalità Vi di &kappname; che non sono compatibili con Vim (non contando quelle mancanti). Sono elencate sotto con le rispettive motivazioni.

- &kappname;: `U` e &Ctrl;R sono il comando rifai.

  Vim: &Ctrl;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 &kappname; è che la scorciatoia &Ctrl;R è normalmente già presa dalla funzione di sostituzione di &kappname; (ricerca e sostituzione). Normalmente, la modalità Vi non si sovrapporrà alle scorciatoie di &kappname; (questo si può modificare in Impostazioni Configura &kappname;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 &kappname;, quindi sarebbe comunque difficile da supportare.

- &kappname;: ``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 &kappname; normale; quindi il comando ``:print`` apre la finestra di stampa, seguendo il principio di minima sorpresa invece di imitare il comportamento di Vim.

- &kappname;: `Y` copia fino alla fine della riga.

  Vim: `Y` copia tutta la riga, come `y` `y`.

  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 &kappname;, `Y` copierà fino alla fine della riga. Ciò è descritto come più logico nella documentazione di Vim.

- &kappname;: `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 &Esc;.

- 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 &kappname;, permettendo di eseguire molti comandi disponibili nelle implementazioni di Vi oltre ad alcuni specifici di &kappname;. Per maggiori informazioni, vedi advanced-editing-tools-commandline. Per usarla, premi :, inserisci il comando e premi &Enter;.

### Integrazione con le funzionalità di &kate;

- La modalità visuale è attivata automaticamente quando si seleziona del testo col mouse. È attivata anche quando si usano funzioni di &kate; che selezionano del testo, come Seleziona tutto (dal menu o con &Ctrl;A).

- Gli indicatori di Vi e i segnalibri di &kate; sono integrati. Quando si crea un indicatore in modalità Vi, viene creato un segnalibro di &kate; corrispondente e appare nel menu Segnalibri. Allo stesso modo, quando si crea un segnalibro di &kate;, 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
&Ctrl;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
&Ctrl;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
&Ctrl;F | Pagina giù
&Ctrl;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
&Ctrl;S | Dividi la vista orizzontalmente
&Ctrl;V | Dividi la vista verticalmente
&Ctrl; W, `w` | Passa alla prossima finestra divisa
&Ctrl; W, `h` &Ctrl; W← | Passa alla finestra divisa a sinistra
&Ctrl; W, `l` &Ctrl; W→ | Passa alla finestra divisa a destra
&Ctrl; W, `k` &Ctrl; W↑ | Passa alla finestra divisa sopra
&Ctrl; W, `j` &Ctrl; 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
&Backspace; | 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
&Ctrl;I | Salta in avanti alla posizione successiva
&Ctrl;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)
&Ctrl;← | Sposta una parola a sinistra
&Ctrl;→ | 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

&Ctrl;D | Riduci rientro
&Ctrl;T | Fai rientrare
&Ctrl;E | Inserisci da sotto
&Ctrl;Y | Elimina parola
&Ctrl;W | Elimina parola
&Ctrl;U | Cancella riga
&Ctrl;J | Nuova riga
&Ctrl;H | Elimina carattere all'indietro
&Ctrl;Home | Vai al primo carattere del documento
&Ctrl;R ``n`` | Inserisce i contenuti del registro `n`
&Ctrl;O, `comando` | Entra nella modalità normale per un solo comando
&Ctrl;A | Incrementa il numero attualmente selezionato
&Ctrl;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 &kappname; non è supportare il 100% delle funzionalità di Vim.