Tasti freccia di Linux vi interrotti in modalità di inserimento


95

I miei tasti freccia non funzionano in vi in ​​modalità di inserimento a casa, inseriscono solo una nuova riga e una lettera maiuscola, come la "A". C'è un modo per risolvere questo?


3
Intendo la distribuzione di Linux?
Miquel

Lavorano fuori casa? :-)
Brian Agnew

4
Ovviamente, la soluzione è emacs. Ovviamente.
Paul Nathan

38
@Paul Nathan - Se la soluzione è emacs, non voglio sapere qual è il problema.
Chas. Owens

Risposte:


107

Presumo che tu stia usando vim poiché è etichettato come Linux. Provare:

:set nocompatible

(Puoi configurare il tuo .vimrc con questo aggiungendo questo comando. Crea un nuovo file .vimrc se non è già presente nella tua home directory, esegui echo $HOMEper controllare il percorso della home directory.)


7
Assicurati di avviare vi con il comando vime non vi. La maggior parte delle funzionalità avanzate e utili di vimsono disabilitate per impostazione predefinita a meno che non si inizi con vim.
pts

1
@pts - solo su sistemi danneggiati. Avviare vim come vi su tutte le mie scatole funziona perfettamente; tuttavia, ci sono alcune scatole CentOS che ho usato che dimostrano il comportamento di cui stai parlando.
Chas. Owens

Qualcuno può modificare questa risposta per includere come apparirebbe in un vimrc?
Stephan

1
@Stephan Aggiungi set nocompatiblesulla propria riga nel .vimrc
Matthew Wilcoxson

Su Ubuntu ho risolto questo problema semplicemente installando vim (sudo apt install vim) da quel momento su vi funziona bene con i tasti freccia in modalità di inserimento. Modifica: vedo ora che questo è stato già menzionato da Han qui sotto.
pizzamonster

74

Ubuntu viene fornito di default con vim-tiny, che non ha tutti i campanelli e fischietti di vim.

Fai sudo apt-get install vimsubito tutte le succose funzionalità di cui parlano tutti.


1
Questo era esattamente ciò di cui avevo bisogno in mint linux. Installando vim ero ancora in grado di iniziare a usare "vi" e tutta l'evidenziazione del codice era ora abilitata. Che fantastica conoscenza di Linux :)
wired00

1
Questo ha funzionato per il mio Raspberry Pi (Jessie Lite). Stavo riscontrando questo problema quando avrei protetto la shell, ma ora è stato risolto completamente :-)
JakeD

35

:set term=builtin_ansi

risolto per me. Puoi incollarlo in vim mentre sei in modalità di fuga, (modalità bip) o aggiungerlo alla fine di ~ / .vimrc senza il carattere ":" iniziale


: set term = xterm potrebbe anche funzionare, (e più facile da ricordare).
Alexx Roche

Cordiali saluti, :set term=builtin_ansiho lavorato per me. :set term=xtermno.
FractalSpace

su una delle mie macchine Linux che uso export TERM=xtermsulla riga di comando prima di invocare vi e poi :set term=xtermin vim 7.2 funziona per me
Alexx Roche

Funziona perfettamente! Grazie!
Akhmedzianov Danilian

Funziona per abilitare la navigazione con i tasti freccia ma ha completamente ucciso tutta la codifica a colori nel terminale.
Ken Ingram,

16

vi non supporta i tasti freccia in modalità di inserimento. Usa vim. Sebbene il tuo vi possa essere solo un collegamento a vim, potrebbe essere configurato per comportarsi come il vi "originale" e quindi disabilitare i tasti freccia. Basta invocare vim direttamente.


Sebbene questa non sia una soluzione, è la migliore spiegazione per il comportamento (imo), rendendo chiara la differenza tra vie vim. Ma sulla mia scatola è vimstampato command not found: D
Daniel W.

@DanFromGermany Forse hai solo un vi installato e non vim. Prova ad installare vim tramite il gestore di pacchetti del tuo sistema Linux se desideri utilizzarlo.
lothar

:set term=ansiha funzionato per me grazie Raz . dici che "non supporta". Mi chiedo l'hai detto perché il vim-tinypacchetto di Ubuntu -Sto usando- è diverso da Vanilla vio l'impostazione dei termini funzionerebbe anche in questo?
n611x007

8

Ancora un'altra variazione: questo problema mi è apparso dopo alcune modifiche .vimrc. Una ricerca concertata alla fine ha rivelato che la mia intelligente rimappatura dell'ESC in modalità normale non era una buona idea. Rimuoverlo ha risolto il problema:

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc

Ho provato di tutto dopo aver riscontrato questo problema, ed era quello che stavo cercando, grazie!
Dan Bartlett

Grazie per la correzione, ho cercato ovunque. Qualche idea sul perché la rimappatura della fuga causi problemi?
foto

6

L'unica cosa che ha funzionato per me è stata ": set term = ansi"


1
Anche questo sembra aver funzionato per me utilizzando un container Docker.
ohlando

1
Questo ha funzionato anche per me. Sto usando cmd.exe in Windows e sshing in Ubuntu usando
vagrant

@ CodeCodeO-1-O-log-n quindi da che parte stavi usando visu Windows o su Ubuntu? :)
n611x007

Su Windows, ho eseguito cmd.exe e poi vagrant ssh nel server Ubuntu e poi vi nel server. Ma in seguito ho iniziato a usare Putty e non ho più bisogno di farlo e Putty sta funzionando alla grande per me.
codelogn

2

Ho avuto lo stesso problema con i tasti freccia, ma quando ho usato ha impostato nocp o nocompatible, il mio backspace non ha funzionato correttamente

per qualche motivo quando ho installato vim con sudo apt-get install vim, vi non ha più avuto problemi con le frecce o il backspace


1

Ho appena avuto un problema con i tasti freccia dopo essere passato a utilizzare git in .vim.

Ho installato questo repository - https://github.com/sunaku/.vim

e dopo aver scavato per un'ora, ho scoperto che il plug-in AutoClose (che non piaceva comunque) ha rotto i tasti freccia.

I documenti del plugin suggeriscono che si dovrebbe impostare set ttimeoutlen = 100, ma per me non ha funzionato! (usando urxvt + screen o urxvt e persino xterm)

Quindi ho rimosso il plugin alla fine.


0

Potresti anche provare "noesckeys"


0

Ho avuto lo stesso problema durante l'utilizzo di vim in Windows 8.1 con Cygwin.

La soluzione ha funzionato per me è, basta eseguire il seguente comando nel tuo terminale Cygwin:

cp vimrc_example.vim ~/.vimrc

-1

Nella riga di comando scrivi questo:

EXINIT="set nocompatible"; export EXINIT

1
aggiungi qualche (breve) descrizione della tua soluzione
Raidri supporta Monica
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.