Backspace in modalità insert in vi non cancella il carattere


70

Sono nuovo di vi, in realtà ho iniziato a studiare vi da oggi e mi sono bloccato sul comportamento del tasto backspace.

In realtà quando ho acceso vi sul mio Ubuntu 12.04 per la prima volta la mia chiave backspace funzionava normalmente ma dopo ha iniziato a comportarsi in modo strano. Ogni volta che premo il backspace nella modalità di inserimento si sposta di un posto a sinistra invece di cancellare il personaggio.

Come posso ripristinare la funzionalità di backspace predefinita? Si prega di notare che non voglio installare vim o impostare nocompatibilty.

Risposte:


39

Questo è un comportamento corretto per vi, e cancella il personaggio, semplicemente non lo mostra sostituendolo con uno spazio vuoto come in vim. Sarà evidente quando si sovrascrive il carattere cancellato con un altro carattere o si ritorna alla modalità di comando.

Ad esempio, a partire dalla modalità di comando su una riga vuota, la riga seguente comporterà fo:

ifooBackspaceEsc

Prima di premere il Esctasto, la riga leggerà foo, ma l'ultimo oè stato taggato come "colonna di cancellazione". Vedi http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (principalmente punto 4 sotto quell'intestazione, e naviga un po 'più in basso per leggere <Control> -H)


73

Ecco la soluzione più semplice.
Apri un terminale, vai alla home directory e digita

vi .vimrc

un nuovo file aperto ora aggiunge queste righe al file ed esce salvando

$ set nocompatible
$ set backspace=2

9
L'OP ha menzionato che non vogliono usarenocompatibility
kiri il

1
non è necessaria alcuna compatibilità, ma puoi farlo anche aggiungendo la seconda riga
Adithya Chakilam,

1
La seconda riga funziona solo per me se aggiungo anche la prima riga.
Djjeck,

Iniziato da un .vimrc vuoto e mi chiedevo perché backspace non funzionasse su mac in iTerm2. Molte grazie!
Igor Malyk,

@ minerz029 aggiungi ancora questa è la risposta per la maggior parte delle persone, dal momento che non c'era tale qualifica nel titolo della pagina.
Muhd,

23

È necessario passare alla modalità "Inserisci" spostando il cursore con i. Esistono altri modi per eliminare direttamente i caratteri. Puoi scaricare un powerpoint che uso quando insegno una lezione su VI qui .

Sembra che tu sia in modalità "Comando". Per spostare il cursore:
H= Sinistra, J= Su, K= Giù, L= Destra

Una volta posizionato il cursore, è possibile eliminare il testo nel modo seguente:
x Elimina il carattere sotto il cursore
X Elimina il carattere prima del cursore
dwElimina dal cursore alla parola successiva
dd Elimina la linea su cui si trova il cursore.

Per inserire il testo , è possibile utilizzare una delle modalità di immissione del testo.
aAggiunge il testo a destra del cursore
AAggiunge il testo alla fine della riga corrente
iAggiunge il testo a sinistra del cursore
IAggiunge il test all'inizio della riga corrente
oApre una nuova riga sotto la riga corrente e pone l'utente nella modalità di immissione testo
OApre una nuova riga sopra la riga corrente e ti mette in modalità di immissione testo

Per uscire dalla modalità di immissione Testo e tornare alla modalità Comando, utilizzare Esc.

Per annullare le modifiche: (Un preferito dagli studenti)
uAnnulla l' ultimo comando immesso
UAnnulla tutte le modifiche alla ** riga corrente **

Per salvare / uscire: :wscrive (salva) il file e rimane aperto
:wqscrive (salva) il file ed esce VI esce
:q (esce) se non hai apportato modifiche
:q! Esci (esce) senza salvare modifiche
ZZscrive (salva) il file ed esce VI (uguale a :wq)


11
L'OP ha menzionato che il comportamento misterioso si verifica in modalità inserimento . Quindi questa non è la risposta alla domanda posta.
LarsH,

In realtà l'OP non è stato indicato in modalità inserimento . La domanda è stata modificata.
Argusvision,

1
Ok. Hai ragione. Sembra che io abbia fatto un'ipotesi. È stata la mia esperienza che la maggior parte delle persone nuove a VI incontrano problemi con il cambio di modalità e la navigazione in modalità di comando. I miei studenti spesso si lamentano e danno la colpa a VI per un comportamento irregolare quando si tratta semplicemente di un errore dell'utente o di non avere una comprensione del set di comandi.
Argusvision,

1
Comprensibile. Sono d'accordo che è la reazione comune alla modalità non-insert.
LarsH,

Argus, "in modalità inserimento" è stato aggiunto al titolo della domanda in una modifica, ma era nel corpo della domanda dall'inizio.
LarsH,

13

Installa il pacchetto vim completo per ottenere la funzionalità backspace e i tasti freccia

sudo apt-get update
sudo apt-get install vim

Funziona come previsto ... Migliore risposta
Vicky,

Questa è la risposta perfetta. Non è necessario modificare alcun file di configurazione, basta installare il vim-runtimepacchetto e tutto funziona come al solito. Grazie!
Olli D-Metz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.