I tasti freccia smettono spontaneamente di funzionare in vim


25

Di recente ho aggiornato da OS X 10.6 (credo) a 10.9. Da allora sembra che, durante la modifica vim, i tasti freccia smettano "spontaneamente" di funzionare.

Ad un certo punto, frustrato, ho "schiacciato" uno dei tasti freccia e alla fine mi è stato mostrato un errore "E388 Impossibile trovare una definizione". Tutte le altre volte che l'ho sperimentato, le frecce, dopo aver lavorato per un po ', improvvisamente iniziano a darmi dentro !

Chiudere e riaprire risolve temporaneamente il problema . Ma vorrei prevenirlo !

Qualcuno sa cosa potrebbe essere? E come ripararlo?


Sembra che il mio valore predefinito sia vimrcstato modificato durante l'aggiornamento. Se la mia memoria è corretta, in precedenza era un file abbastanza grande. Ora contiene solo questo:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Non ho ancora idea di cosa facciano queste opzioni. Lo esaminerò - ma, si spera, qualcuno qui lo sappia più rapidamente di quanto io possa google e leggere ...


Mi sono anche reso conto che qui c'è un forum incentrato su Apple per cui questa domanda potrebbe essere più adatta. Quindi, se questa è una condizione più probabile di OS X che vim, forse una mod potrebbe migrare questo per me.
svidgen,

2
Mi ricorda di aver lavorato su un mainframe "Prime" al college. Il professore ha insegnato che non dovresti mai usare i tasti freccia vi. Usa sempre hjkl. Ecco dove i tasti "freccia" si trovano su hardware antico.
Red Cricket,

OK ... Ma i tasti freccia dovrebbero funzionare. Indipendentemente dal fatto che il tuo professore pensi che dovrei usarli. E le trovo convenienti a volte. Quindi, non vedo l'ora di vedere la soluzione.
svidgen,

1
cosa succede quando si inserisce la chiave letterale in un buffer? vai in modalità inserimento e premi Ctrl + v, quindi un tasto freccia. Vim sul mio Mac mostra il tasto freccia su come ^[OA, giù come ^[OB, destra come ^[OCe sinistra come ^[OD. controlla prima e dopo il problema si presenta
Nathan Wallace,

@NathanWallace non sono sicuro di come ho trascurato la tua domanda. Lo proverò quando sarò sul mio Mac dopo.
svidgen

Risposte:


24

Trovato nel blog di James Hodgkinson , il seguente comando funziona per me. Nota che aggiornerà la schermata di VIM.

:!reset

Non sono sicuro di come ho ignorato questa risposta, ma sembra molto promettente!
svidgen,

In effetti ... Colpire Ctrl + R come descritto nell'articolo riproduce il problema in piena coerenza con le mappature errate dei tasti freccia annotate nella mia risposta a Nathan sopra. E il comando reset lo risolve in quel caso. E .. Non riesco a riprodurre il problema in modo affidabile in nessun altro modo, quindi questa è sicuramente la risposta più utile!
svidgen,

11

Ho riscontrato questo problema anche alcune volte. Mi è capitato di eseguire lo schermo GNU su un altro computer a cui ero connesso tramite SSH. Per risolvere il problema, ho rimosso i miei schermi ( Ctrl- a d), disconnesso dalla macchina, ricollegato e ricollegato utilizzando screen -x. Potrebbe funzionare senza disconnettersi dalla macchina, semplicemente staccando e ricollegando lo schermo. Non ricordo però.


Chiudendo la sessione dello schermo e riavviandolo, ho risolto il problema.
Eno,

1
quello era il problema per me. In qualche modo è screenentrato in uno stato di funk (tramite una connessione ssh). Chiudendo quel terminale, poi di nuovo ssh, e ha screen -rdfatto il trucco. Grazie!
Pierre D

@PierreD corretto, ho già riscontrato questo problema alcune volte - anche in una screensessione, Detach & Reattach ha risolto il problema, grazie!
stdcerr,

6

Nel percorso /usr/share/vim/ho trovato il .vimrcfile ... Lì ho aggiunto la linea

set term=ansi 

Ha funzionato per me. Ora i tasti freccia funzionano correttamente nell'editor Vim.


2
Questo è stato risolto anche per me, poiché l'ultimo aggiornamento di Windows 10 WSL / Ubuntu l'ha rotto.
Grey Fox,

3

Sembra molto simile al tuo problema. L'articolo si intitola: Cursor Keys in Vim: You Mac'ing Me Crazy! .

estratto

Vim è utile in molte situazioni, in particolare per modifiche rapide (soprattutto come root) e per la modifica di file su un server remoto. Un fastidio che ho avuto durante i miei nove mesi con un Mac Book Pro sono i tasti cursore in Vim che suonano il campanello in modalità di inserimento o comando invece di cambiare riga. L'aggiornamento alla versione 7 tramite MacPorts ha prodotto gli stessi risultati. I tasti cursore hanno funzionato dopo aver commutato il mio TERM su VT220 da rxvt! Lo svantaggio era che l'evidenziazione della sintassi ha smesso di funzionare.

Fortunatamente, l'aggiunta di VT220 ai miei parametri di ricerca di Google ha rivelato un riferimento ai tasti cursore vt100 nella documentazione di Vim. Aggiungi il seguente codice al tuo file .vimrc per risolvere il problema:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

Nello stesso articolo c'è un altro suggerimento di impostare il vostro $TERMper linuxinvece su OSX.

estratto

Una soluzione migliore consiste nel modificare il valore predefinito per TERM in linux o dtterm poiché il valore TERM verrà acquisito sul server remoto. Al giorno d'oggi, scommetterei che la maggior parte dei server supporta entrambi questi tipi di terminali.


Hmm ... Sono ancora più confuso ora. Pensavo di avere .vimrcfile globali / predefiniti . Questi sarebbero stati spostati o rimossi durante un aggiornamento di OS X?
svidgen,

@svidgen - No, non credo che sarebbe cambiato, ma quel problema sembrava er-affidabile simile al tuo, e la correzione è abbastanza facile da provare, quindi ho pensato di condividerla con te. Per inciso, $TERMavresti potuto cambiarti.
slm

Whelp, questa è sicuramente la risposta più pertinente qui. +1 per quello. Purtroppo non so se lo risolva ancora, purtroppo, poiché non riesco a riprodurre il problema in modo coerente.
svidgen,

Dopo aver applicato questa correzione, il problema si è verificato nuovamente. Ancora una risposta pertinente, lasciando +1. Per favore, vedi il mio commento sopra se sei interessato a fornire una risposta aggiuntiva.
svidgen,

0

Congratulazioni per l'aggiornamento. Ho fatto il mio aggiornamento durante il fine settimana e ho avuto a che fare con alcuni dei miei strani problemi con la tastiera.

Ecco un paio di cose che dovevo fare:

  • Rimuovere il vecchio software di gioco Logitech e aggiornarlo. Prima di farlo, ho riscontrato problemi con le parentesi graffe quadrate e ricci. Tasti speciali spesso inviano sequenze di escape nel contesto VIM, quindi questo potrebbe essere rilevante.
  • Vai a Preferenze di sistema: Sicurezza e privacy: Privacy: accessibilità e abilita un paio di app (synergy_server e software di gioco Logitech). Prima di questa modifica non ero in grado di controllare gli altri computer in sinergia o utilizzare le macro con il mio G11. Dubito che questa sia una connessione diretta per te, ma le opzioni di Accessibilità sono nuove e potrebbero applicarsi ad altre tue app.

0

Se stai lavorando in .sqlfile in vim(non menzionare) questo potrebbe aiutarti. L'ho appena affrontato l'altro giorno.

Nel file ~/.vimrc

let g:omni_sql_no_default_maps = 1

questo particolare problema è discusso qui

Se non riscontri questo problema con i .sqlfile, vimmi scuso, il mio unico pensiero sarebbe quello di verificare la mappatura all'interno vimquando si verifica il problema.

:map Ctrl V → quando si perde la capacità di usare la freccia, eseguire quel comando e vedere se la mappatura è scomparsa. se lo ha fatto, questo ti dà un posto dove iniziare a scavare.


0

Ho avuto questo problema in una sessione SSH e l'ho risolto eseguendo il logout e poi di nuovo il login:

exit
ssh ...

Grazie per il peso. La risposta selezionata ha funzionato costantemente per me. L'hai provato?
svidgen,

Sì, la soluzione accettata non funzionava su Ubuntu 18. Ho anche disinstallato e reinstallato vim (nella stessa sessione ssh) e nessun dado. Disconnettersi e quindi riconnettersi nuovamente funzionalità freccia ripristinata.
duhaime,

0

Ho avuto questo problema quando ho usato una "variabile di ambiente di sistema" in Windows, impostando TERMsu xterm-256color. Il problema è scomparso (e sono vimtornato alla normalità) quando ho eliminato di nuovo la variabile.

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.