Colpire i tasti freccia aggiunge caratteri nell'editor vi

149

Quando ho provato a utilizzare i tasti freccia nella modalità di inserimento in vi editor i seguenti caratteri sono stati inseriti nell'editor:

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

Per favore aiutami a risolvere questo problema.

    
posta bvb 05.10.2013 - 07:04

12 risposte

191

Se non hai già un file .vimrc 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. :)

    
risposta data Gaurav Manchanda 05.10.2013 - 09:23
56

Installa vim - & gt; 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, vedi qui

Quindi continua a aprire i file come al solito :

vi desired-file
    
risposta data sthysel 21.11.2012 - 09:03
26

Con vi , quando fai clic su i attivi il comando sul testo Inserisci .
Questo comando ti permette di inserire del testo nel tuo file.
E a destra, quando fai clic:

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

Till disattiva questo comando.
Per disattivare un comando in vi : basta cliccare su Esc
E poi tornerai all'uso normale dei tuoi tasti freccia:

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

FYI, ecco alcuni comandi vi :
Da questa fonte .

:x Restituisci esci vi , scrivendo il file modificato nel file chiamato nell'invocazione originale
:wq Restituzione esci da vi , scrivendo il file modificato nel file denominato nell'invocazione originale
:q Torna esci (o esci) vi
:q! Ritorno esci vi anche se le ultime modifiche non sono state salvate per questa chiamata vi

sposta cursore in basso di una riga
sposta cursore su una riga < br> sposta cursore a sinistra di un carattere
sposta cursore a destra di un carattere

u annulla qualsiasi cosa tu abbia appena fatto; un semplice interruttore
. ripristina tutto ciò che hai appena fatto

i inserisci testo prima del cursore, fino a Esc hit
I inserisci testo all'inizio della corrente riga, fino a Esc hit
a aggiungi testo dopo il cursore, fino a Esc hit
A append testo alla fine della riga corrente, fino a Esc hit
o aperto e inserisci il testo in una nuova riga sotto la riga corrente, fino a Esc hit
O aperto e inserisci il testo in una nuova riga sopra la riga corrente, finché Esc non ha colpito

r sostituisci carattere singolo sotto il cursore (non è necessario Esc )
cw modifica la parola corrente con nuovo testo, a partire dal carattere sotto il cursore, fino a Esc hit
x elimina singolo carattere sotto il cursore
Nx elimina N caratteri, iniziando con il carattere sotto il cursore
dw elimina la singola parola che inizia con il carattere sotto il cursore
C cambia (sostituisci) i caratteri nella riga corrente, fino a quando Esc ha premuto
D elimina il resto della riga, iniziando con la posizione corrente del cursore

dd elimina intera riga corrente
Ndd elimina N righe, iniziando dalla riga corrente; ad es., 5dd cancella 5 righe
yy copia (strattona, taglia) la riga corrente nel buffer
Nyy copia (strattonare, tagliare) le successive N righe, inclusa la riga corrente, nel buffer
p incolla le righe nel buffer nel testo dopo la riga corrente

0 (zero) sposta cursore per l'inizio della riga corrente (quella con il cursore)
$ sposta cursore per terminare della riga corrente
w sposta cursore all'inizio della parola successiva
b sposta cursore indietro all'inizio della parola precedente
:0 Ritorno o 1G sposta cursore sulla prima riga nel file
:n Ritorno o nG sposta cursore sulla linea n
:$ Ritorno o G sposta cursore sull'ultima riga nel file

/string ricerca inoltro per occorrenza di stringhe nel testo
?string ricerca indietro per occorrenza di stringhe nel testo
n sposta alla prossima occorrenza della stringa di ricerca
N sposta alla prossima occorrenza della stringa di ricerca nella direzione opposta

    
risposta data Boris 05.10.2013 - 08:52
16

Per disabilitare la stampa delle lettere premendo le frecce in modalità di modifica, puoi eseguire le seguenti operazioni

vi $HOME/.exrc 

(crea il file se non esiste) e aggiungi la riga set nocompatible e salvalo.

    
risposta data Aniket Thakur 08.08.2015 - 14:46
11

Ci sono tre modalità nell'editor vi, ovvero:

  • modalità di comando
  • modalità di inserimento
  • modalità predefinita.

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 ciò funzionerebbe solo quando non hai premuto i (o qualsiasi altra modalità di input che immette comandi come a , A , I ).

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 passare alla modalità predefinita in qualsiasi momento. Quando si passa alla modalità di inserimento, premere i o a e per navigare basta premere il tasto i e usare i tasti freccia o h , j , k , l .

    
risposta data ps_cool 21.11.2012 - 08:14
6

Ho avuto lo stesso identico 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 aver scoperto che

$ 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
    
risposta data kitingChris 18.01.2017 - 11:53
3

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

Verifica delle alternative: /etc/alternatives/vi & amp; rightarrow; % Co_de%

Quindi /usr/bin/vim.tiny è vi e utilizza vim.tiny .

E in /etc/vim/vimrc.tiny trovi la seguente riga:

set compatible

Che è quasi l'unica cosa in questo file. Tieni presente che in vimrc.tiny sta utilizzando /etc/vim/vimrc .

Quindi installa vim, o modifica il file nocompatible , oppure crea il tuo vimrc.tiny che dovrebbe contenere la riga:

set nocompatible
    
risposta data Gunstick 10.01.2017 - 23:11
2

Nota:

Ci sono buone informazioni negli altri post ma nessuno dei post ha cercato di spiegare perché questo comportamento è successo. Molte persone sono destinate a inciampare su questo in futuro. Inoltre, potresti contrassegnare questa domanda come risolta dal momento che probabilmente uno dei post precedenti ti ha aiutato?

Ecco una spiegazione :

Vi è un editor che è in circolazione da molto tempo, con radici nei sistemi Unix. È un buon strumento, ma è stato ripetuto e ora c'è di meglio. Vim è stato scritto più tardi ed è l'iterazione. Le persone si riferiscono comunemente a vi come "vim-minimal" e vim è una versione "migliorata" di vi. Puoi pensare in questo modo: vi è il core e vim si espande su di esso.

Probabilmente come hai scoperto il comportamento :

Affinché tu abbia scoperto questo problema, hai premuto " i " per accedere alla modalità inserisci , quindi utilizzare i tasti freccia per navigare nella riga corretta e modificare punto. Questo è ciò che ha causato il tuo problema di char inatteso.

Soluzione 1 o 2

1) vi someFile Mentre utilizzi vi , passa prima al punto di modifica, quindi accedi alla modalità di inserimento.

2) vim someFile Utilizza semplicemente vim dall'inizio.

Non posso sottolineare abbastanza per leggere il manuale (pagine man) o per usare -h come aiuto. Una volta che ti aggiusti ai modelli nella shell, le pagine man diventano il tuo migliore amico. Esempio: man vi o man vim

Convalida che Vim è installato .

Apri una finestra della console ed esegui:

dpkg --list | grep vim

Se ottieni qualcosa di simile a questo, puoi iniziare a usare vim.

~ $ dpkg --list | grep vim
ii  vim         2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor
ii  vim-common  2:7.4.052-1ubuntu3  amd64  Vi IMproved - Common files
ii  vim-runtime 2:7.4.052-1ubuntu3  all    Vi IMproved - Runtime files
ii  vim-tiny    2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor - compact version

Se il prompt dei comandi non restituisce nulla, allora vim is non è installato. Utilizzare gli esempi di seguito per aggiornare i repository e quindi installare vim.

sudo apt-get update
sudo apt-get install vim

Se hai la possibilità di utilizzare vi o vim solo quando cerchi su Internet come riparare qualcosa e ti capita di dimenticarti di digitare vim , c'è un modo per risolverlo per il futuro. Ti avverto di prestare attenzione. Puoi usare un alias per sovrascrivere vi con un riferimento a vim in modo che, indipendentemente da ciò che scrivi nel futuro infrequente, ottieni vim senza "oops"! momento. Puoi sempre eliminare un alias più tardi.

Digita vim .bashrc . Spostati sulla riga vuota con solo ~ (o qualsiasi altra riga che inizia con alias (quindi sono raggruppati insieme) e quindi premi il tasto i per inserire -insert- modalità. Sulla propria riga separata, immettere quanto segue:

alias vi='vim'

Premi Esc e quindi digita :wq . Ora è necessario ricaricare il file. Digita source .bashrc Qualsiasi altra shell che si apre dopo aver apportato queste modifiche carica automaticamente il file .bashrc.

    
risposta data D75 30.10.2016 - 05:20
1

Il tradizionale editor vi non riconosce i tasti freccia (... afair). Ci sono due soluzioni:

  1. usa vim invece di vi
  2. usa h, j, k el per navigare (non puoi navigare mentre modifichi il tradizionale vi btw.)
risposta data MadMike 05.10.2013 - 07:51
1

Ciò può anche essere dovuto alla variabile TERM ; impostalo per esempio in questo modo:

 export TERM=xterm
    
risposta data Jasper Nuyens 07.07.2017 - 15:54
1

Su alcuni sistemi, l'opzione nocompatible non è disponibile, oppure potrebbe non risolvere il problema se un plug-in interrompe la funzionalità dei tasti freccia. Ecco una soluzione ...

Modifica il file .exrc per includere le seguenti righe:

map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha

Oppure, se il problema esiste solo in modalità normale, puoi passare a nmap e saltare il seguente a , come segue:

nmap! ^[OA ^[k

e così via.

Ecco le combinazioni di tasti necessarie per produrle (mostrando solo una prima):

map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka

Questo comando sfugge alla modalità di modifica, si muove nella direzione desiderata e rientra nella modalità di modifica. Questo è necessario per superare Vi leggendo la sequenza di escape come una sequenza di letterale & lt; ESC & gt; & lt; O & gt; & lt; A & gt ;, ecc.

Fonte: link

    
risposta data Dominic Comtois 08.06.2017 - 04:33
0

Per VI creare o modificare il file "~ / .exrc" o VIM creare o modificare il file "~ / .vimrc" impostare o aggiungere nella riga.

set nocompatible

Al momento della stesura di questo articolo ci sono elogi sul secondo elemento più votato che si chiede perché il loro ingresso non sia stato accettato. Il motivo sono gli host che non consentono l'installazione di altri editor. Anche allora Vim a volte ha gli stessi effetti, quindi ci sono un sacco di informazioni utilizzabili dalle prime due voci. Non posso commentare, tuttavia spero che questo chiarisca i motivi per cui nessuno dei due è corretto al 100% del tempo.

    
risposta data 28.11.2018 - 19:29

Leggi altre domande sui tag