Domanda Colpire i tasti freccia aggiunge caratteri nell'editor vi


Quando ho provato a usare i tasti freccia in modalità inserimento in vi editor i seguenti caratteri vengono inseriti nell'editor:

  • per  Ottengo B,
  • per  Ottengo A,
  • per  Ottengo D,
  • per  Prendo C.

Per favore aiutami a risolvere questo problema.


143
2017-10-05 05:04


origine


Ho avuto una bella risata leggendo il titolo;) Sono sicuro che c'è un XKCD per la sensazione spettrale che viene (agli utenti inesperti) quando il tasto freccia stampa le lettere. - vvy


risposte:


Se non hai già un .vimrc file nella tua home directory, creane uno usando questo:

vim ~/.vimrc

Aggiungi questa riga all'inizio del file:

set nocompatible

Salva il file e questo dovrebbe risolvere il problema per te. :)


177
2017-10-05 07:23



Ho dovuto creare un file .exrc per vi, ma impostare nocompatible ha funzionato alla grande. - tgun926
C'è un trucco se usi vi invece di vim, devi fare la stessa configurazione ma nel ~/.exrc file. - tzi
Lavorato. Ma perché questa correzione è richiesta? Perché per impostazione predefinita non gestisce le frecce? - Mohit
Per impostazione predefinita, vi / vim è programmato per sostituire i tasti freccia con i tasti h, j, k, l. Questo è fatto in modo da non doverti spostare dall'area principale della tastiera. - Gaurav Manchanda
il prossimo problema è backspace, soluzione: askubuntu.com/questions/296385/... - daVe


Installa vim -> Questo risolverà il problema.

sudo apt-get install vim

Ci sono molti buoni tutorial su vim / vi su youtube, o sul web in generale. Per il tuo problema, Vedere qui

Quindi continua a aprire i file come al solito:

vi desired-file

47
2017-11-21 08:03



ha funzionato per me, anche se non sono sicuro del perché questo è diverso dal gioco che stavo lanciando in precedenza - Amos Folarin
Questa dovrebbe essere la risposta accettata (ma sembra che nessuno stia accettando). è il modo più semplice / pulito per ottenere la completa 'modernizzazione' di vim su una console di computer (invece di terminali di era tty / ANSI. - Lockszmith
sì, sono d'accordo con te Lockzsmith, questa dovrebbe essere la risposta accettata - niccolo m.
Questo ha funzionato per me. Sono sorpreso che raspian abbia la versione di vi / vim che fa ... anche se tutti i tutorial ti dicono di usare nano, il che è difficile sostenere che vim sia davvero migliore di quello. Probabilmente l'unica ragione per cui utilizzo vim piuttosto che nano è perché vim è sempre su ogni macchina e sembra una possibilità 50/50 se nano è. - ArtOfWarfare


Con vi, quando si fa clic su io si attiva il comando a Inserire testo.
Questo comando ti permette di inserire del testo nel tuo file.
E giusto, quando si fa clic:

  • sopra  inserirà una "A",
  • sopra  inserirà una "B",
  • ...

Fino si disattiva questo comando.
Per disattivare un comando in vi : basta cliccare Esc
E poi tornerai normale uso dei tasti freccia:

  •  salire,
  •  andare giù,
  • ...

Cordiali saluti, eccone alcuni vi comandi:
Da questa fonte.

:xRitorno  esci da vi, scrivendo il file modificato sul file chiamato nell'invocazione originale
:wqRitorno  esci da vi, scrivendo il file modificato sul file chiamato nell'invocazione originale
:qRitorno  esci (o esci) vi
:q!Ritorno  esci da vi anche se le ultime modifiche non sono state salvate per questa chiamata vi

  mossa cursore in basso di una riga
  mossa cursore su una riga
  mossa cursore ha lasciato un carattere
  mossa cursore a destra di un carattere

u  disfare qualunque cosa tu abbia appena fatto; un semplice interruttore
.  rifare qualunque cosa tu abbia appena fatto

i  inserire testo prima del cursore, fino a Esc colpire
I  inserire testo all'inizio della riga corrente, fino a Esc colpire
a  aggiungere testo dopo il cursore, fino a Esc colpire
A  aggiungere testo alla fine della riga corrente, fino a Esc colpire
o  Aperto e metti il ​​testo in una nuova riga sotto la riga corrente, fino a Esc colpire
O  Aperto e metti il ​​testo in una nuova riga sopra la linea corrente, fino a quando Esc colpire

r  sostituire singolo carattere sotto il cursore (n Esc necessario)
cw  modificare la parola corrente con nuovo testo, a partire dal carattere sotto il cursore, fino a Esc colpire
x  Elimina singolo carattere sotto il cursore
Nx  Elimina N caratteri, a partire dal carattere sotto il cursore
dw  Elimina la singola parola che inizia con il carattere sotto il cursore
C  modificare (sostituire) i caratteri nella riga corrente, fino a Esc colpire
D  Elimina il resto della riga, a partire dalla posizione corrente del cursore

dd  Elimina tutta la linea corrente
Ndd  Elimina N linee, iniziando dalla linea corrente; ad es. 5dd elimina 5 righe
yy  copia (strattonare, tagliare) la riga corrente nel buffer
Nyy  copia (strattonare, tagliare) le successive N righe, inclusa la riga corrente, nel buffer
p  incollala / e riga / e nel buffer nel testo dopo la riga corrente

0 (zero) mossa cursore per l'inizio della riga corrente (quella con il cursore)
$  mossa cursore alla fine della riga corrente
w  mossa cursore all'inizio della prossima parola
b  mossa cursore torna all'inizio della parola precedente
:0Ritorno o 1G  mossa cursore alla prima riga nel file
:nRitorno o nG  mossa cursore alla riga n
:$Ritorno o G  mossa cursore sull'ultima riga nel file

/string  ricerca in avanti per l'occorrenza di una stringa nel testo
?string  ricerca all'indietro per l'occorrenza di una stringa nel testo
n  mossa alla prossima occorrenza della stringa di ricerca
N  mossa alla prossima occorrenza della stringa di ricerca in direzione opposta


26
2017-10-05 06:52



Il tasto freccia giù che inserisce "B" non è un comportamento previsto. I tasti freccia dovrebbero spostare i cursori su e giù / a sinistra ea destra, indipendentemente dalla modalità di inserimento. - James Wong
@JamesWong In realtà, esso è comportamento atteso, in quanto è stato originariamente programmato Vi. VIM, (non ufficiale) il successore di Vi, è in modalità Vi compatibile per impostazione predefinita, che include questo comportamento per i tasti freccia. Quindi la parola "dovrebbe" qui è puramente soggettiva, poiché VIM sta effettivamente facendo ciò per cui è stato programmato espressamente. - villapx
@villapx - No, non è un comportamento previsto. Il comportamento previsto è definito da ciò che il tipico utente si aspetta. La persona tipica che utilizza vi / vim lo sta usando perché è ciò che è installato su un server che devono essere configurati rapidamente e non farà abbastanza per preoccuparsi di installare qualcos'altro. Pochi in realtà scelgono di usare vim quando viene data un'opzione, e meno in realtà conoscono tutte queste caratteristiche o stranezze. L'utente tipico si aspetta che le frecce spostino il cursore - questo è il comportamento previsto. Qualsiasi altra cosa è un comportamento inaspettato, e dovrebbe essere scritta come un bug per quanto sia inaspettato. - ArtOfWarfare
@ArtOfWarfare Sei libero di definire "atteso" come preferisci. Lo sto definendo come quello che ci si aspetta dall'autore del codice, poiché erano abbastanza chiari nel manuale VIM come si supponeva comportasse ... da :help compatible: "Per impostazione predefinita questa opzione è attiva e vengono utilizzate le impostazioni predefinite di Vi. Questo valore predefinito è stato scelto per quelle persone che desiderano utilizzare Vim come Vi, e nemmeno (vogliono) conoscere l'opzione" compatibile " ". - villapx
@ArtOfWarfare Fondamentalmente, l'autore del VIM aveva chiaramente in mente un pubblico specifico quando scriveva questa parte del codice, e solo perché quel pubblico era diverso da quello che il tuo il pubblico sarebbe, non significa che sia un bug. Puoi archiviarlo come un insetto se lo desideri, ma essere pronto ad essere rimproverato dai fondamentalisti di VIM (e in realtà chiunque rispetti il ​​"manuale", un appassionato della RTFM). - villapx


Per disabilitare la stampa delle lettere sulla pressione delle frecce in modalità di modifica, è possibile eseguire le seguenti operazioni

vi $HOME/.exrc 

(crea file se non esiste) e poi aggiungi linea set nocompatible ad esso e salvare.


16
2017-08-08 12:46



Questa dovrebbe essere la risposta accettata. Grazie! - eis
L'ho messo in .vimrc. Perché lo metti in .exrc? - pauljohn32
Le fonti Vim sono entrambe - vedi output di :version per ordine di caricamento (anche :h .exrc o :h init). Suppongo che qualcuno potrebbe desiderare che un'impostazione si applichi sia in vi che in vim, o potrebbe essere pura forza d'abitudine. - William Robertson


Esistono tre modalità nell'editor vi:

  • modalità di comando
  • Modalità di immissione
  • modalità di default.

Quando apri un file, sei in modalità predefinita. Ora se vuoi andare in una posizione specifica nel tuo testo, usa solo i tasti freccia o usa h, j, K, l chiavi. Nota che questo funzionerebbe solo quando non hai premuto io (o qualsiasi altra modalità di immissione che immette comando come un, UN, io).

La ragione per "B" potrebbe essere perché i tasti freccia nella modalità di inserimento non funzionano come i tasti freccia, quindi basta premere Esc per andare in modalità predefinita in qualsiasi momento. Quando si passa alla modalità di inserimento premere io o une per navigare basta premere io chiave e utilizzare i tasti freccia o h, j, K, l.


11
2017-11-21 07:14





Ho avuto lo stesso problema, ma non solo sulla mia macchina locale, ma anche sulle connessioni tramite mastice su una macchina Sles in una macchina virtuale Win7 su un ricevitore Citrix. Sia l'host locale che gli host remoti mostrano dopo la reinstallazione di Ubuntu lo stesso identico problema.

Dopo averlo scoperto

$ localectl list-keymaps 
Couldn't find any console keymaps.

Causa questo strano comportamento VI ho installato il pacchetto console-dati che risolve il problema!

sudo apt-get install console-data

6
2018-01-18 10:53





Tutte le spiegazioni fornite sono un po 'bizzarre. Ho vi ma non vim installato.

Verifica delle alternative: /etc/alternatives/vi &freccia destra /usr/bin/vim.tiny

Così vi è vim.tinye usa /etc/vim/vimrc.tiny.

E in vimrc.tiny trovi la seguente riga:

set compatible

Quale è quasi l'unica cosa in questo file. Si noti che in /etc/vim/vimrc sta usando nocompatible.

Quindi installa vim o cambia il file vimrc.tiny file o creane uno tuo ~/.vimrc che dovrebbe contenere la linea:

set nocompatible

3
2018-01-10 22:11



Non sono sicuro di cosa sia così bizzarro. Finisci per suggerire 1. installare Vim - askubuntu.com/a/220072/158442, 2. creazione ~/.vimrc e impostazione nocompatible: askubuntu.com/a/353944/158442o 3. modifica di un file di sistema. Solo il suggerimento da modificare /etc/vim/vimrc.tiny è nuovo, eppure tu chiami le risposte bizzarre mentre suggerisci la stessa cosa di loro. - muru