As teclas de seta espontaneamente param de funcionar no vim


25

Eu atualizei recentemente do OS X 10.6 (acho) para o 10.9. Desde então, ao editar vim, as teclas de seta "espontaneamente" param de funcionar.

A certa altura, frustrado, "esmaguei" uma das teclas de seta e, eventualmente, um erro "E388 Não foi possível encontrar uma definição" foi exibido. Em todas as outras ocasiões em que eu experimentei, as flechas, depois de trabalharem por um tempo, de repente começam a tocar em mim!

Sair e reabrir resolve o problema temporariamente . Mas, eu gostaria de evitá- lo!

Alguém sabe o que isto pode ser? e como consertar isso?


Parece que meu padrão vimrcfoi modificado durante a atualização. Se minha memória estiver correta, era um arquivo muito grande anteriormente. Agora, apenas contém o seguinte:

" 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

Ainda não tenho ideia do que essas opções fazem. Vou dar uma olhada - mas espero que alguém aqui saiba mais rapidamente do que eu possa pesquisar no Google e ler ...


Também acabei de perceber que há um fórum centrado na Apple aqui para o qual essa pergunta pode ser mais adequada. Portanto, se essa é mais uma condição do OS X vim, talvez um mod possa migrar isso para mim.
svidgen

2
Lembra-me de trabalhar em um mainframe "Prime" na faculdade. O professor ensinou que você nunca deve usar as setas do teclado vi. Sempre use hjkl. É aí que as teclas de "seta" costumam estar no hardware antigo.
Red Cricket

OK ... Mas, as teclas de seta devem funcionar. Independentemente de seu professor achar que eu deveria usá-los. E acho-os convenientes às vezes. Então, ansioso para ver a solução.
Svidgen

11
o que acontece quando você insere a chave literal em um buffer? entre no modo de inserção e pressione Ctrl + v, depois uma tecla de seta. O Vim no meu Mac mostra a tecla de seta para cima como ^[OA, para baixo como ^[OB, para a direita ^[OCe para a esquerda como ^[OD. verifique antes e depois dos se apresenta problema
Nathan Wallace

@ NathanWallace não sabe como eu ignorei sua pergunta. Vou tentar isso quando estiver no meu Mac a seguir.
svidgen

Respostas:


24

Encontrado no blog de James Hodgkinson , o seguinte comando funciona para mim. Observe que atualizará a tela do vim.

:!reset

Não tenho certeza de como ignorei essa resposta, mas parece muito promissor!
svidgen

De fato ... Pressionar Ctrl + R, conforme descrito no artigo, reproduz o problema em total consistência com os mapeamentos de teclas de seta incorretos observados na minha resposta a Nathan acima. E o comando reset resolve nesse caso. E .. Eu não posso reproduzir o problema de maneira confiável, de outra maneira, então esta é definitivamente a resposta mais útil!
svidgen

11

Também já encontrei esse problema algumas vezes. Por acaso, estava executando a tela GNU em outro computador no qual estava conectado via SSH. Para corrigir o problema, desanexei minha (s) tela (s) ( Ctrl- a d), efetuei o logoff da máquina, efetuei login novamente e reconecte-a usando screen -x. Pode funcionar sem sair da máquina, apenas desconectando e reconectando a tela. Não me lembro embora.


Fechar minha sessão na tela e reiniciá-la corrigiu para mim.
Eno

11
esse foi o problema para mim. De alguma forma, screenentrou em um estado de funk (em uma conexão ssh). Fechando o terminal, então ssh novamente, e screen -rdfez o truque. Obrigado!
31416 Pierre D

@ Pierreier correto, já deparei com esse problema algumas vezes - também em uma screensessão, a Detach & Reattach resolveu o problema, obrigado!
stdcerr 11/07

6

No caminho /usr/share/vim/encontrei o .vimrcarquivo ... Lá eu adicionei a linha

set term=ansi 

Funcionou para mim. Agora as teclas de seta estão funcionando corretamente no editor Vim.


2
Isso também foi corrigido para mim, pois a última atualização do Windows 10 WSL / Ubuntu o quebrou.
Grey Fox

3

Isso parece muito com o seu problema. O artigo está intitulado: Cursor Keys in Vim: You Mac'ing Me Crazy! .

excerto

O Vim é útil em muitas situações, principalmente em edições rápidas (especialmente como raiz) e na edição de arquivos em um servidor remoto. Um aborrecimento que tive durante meus nove meses com o Mac Book Pro são as teclas do cursor no Vim tocando a campainha no modo de inserção ou comando, em vez de alterar as linhas. A atualização para a versão 7 via MacPorts produziu os mesmos resultados. As teclas do cursor funcionaram depois de mudar meu TERM para VT220 do rxvt! A desvantagem foi o destaque da sintaxe parou de funcionar.

Felizmente, a adição de VT220 aos meus parâmetros de pesquisa do Google resultou em uma referência a vt100-cursor-keys na documentação do Vim. Adicione o seguinte código ao seu arquivo .vimrc para corrigir o problema:

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

No mesmo artigo, há uma outra sugestão de definir a sua $TERMa linuxvez em OSX.

excerto

Uma solução melhor é alterar o valor padrão do TERM para linux ou dtterm, pois o valor do TERM será escolhido no servidor remoto. Hoje em dia, aposto que a maioria dos servidores suporta esses dois tipos de terminal.


Hmm ... estou ainda mais confuso agora. Eu pensei que tinha .vimrcarquivos globais / padrão . Eles teriam sido movidos ou removidos durante uma atualização do OS X?
svidgen

@svidgen - Não, eu não acho que isso teria mudado, mas esse problema soou semelhante ao seu, e a correção é fácil o suficiente para ser testada, então eu pensei em compartilhar isso com você. Aliás, o $TERMpoderia ter mudado em você.
Slm

Whelp, esta é definitivamente a resposta mais relevante aqui. +1 para isso. Infelizmente, ainda não tenho certeza se o problema será corrigido, pois não consigo reproduzir o problema de forma consistente.
svidgen

Depois de aplicar essa correção, o problema ocorreu novamente. Ainda é uma resposta relevante, deixando o +1. Mas, por favor, veja meu comentário acima, se você estiver interessado em fornecer uma resposta adicional.
svidgen

0

Parabéns pela atualização. Fiz minha própria atualização no fim de semana e lidei com alguns dos meus problemas estranhos no teclado.

Aqui estão algumas coisas que eu precisava:

  • Remova o antigo software de jogo da Logitech e faça a atualização. Antes de fazer isso, eu estava tendo problemas com meu aparelho quadrado e encaracolado. Teclas especiais geralmente enviam esc- [sequências no contexto do VIM, portanto isso pode ser relevante.
  • Acesse Prefs do sistema: Segurança e privacidade: Privacidade: acessibilidade e ative alguns aplicativos (synergy_server e software de jogos Logitech). Antes dessa alteração, eu não conseguia controlar meus outros computadores com sinergia ou usar macros com meu G11. Duvido que seja uma conexão direta para você, mas as opções de acessibilidade são novas e podem se aplicar a algum outro aplicativo seu.

0

Se você estiver trabalhando em .sqlarquivos vim(você não mencionou), isso poderá ajudá-lo. Acabei de lidar com isso outro dia.

No arquivo ~/.vimrc

let g:omni_sql_no_default_maps = 1

esta questão em particular é discutida aqui

Se você não está enfrentando esse problema com .sqlarquivos vim, peço desculpas, meu único pensamento seria verificar o mapeamento interno vimquando o problema ocorrer.

:map Ctrl V → quando você perder a capacidade de usar sua flecha, execute esse comando e veja se o mapeamento desapareceu. caso isso aconteça, isso lhe dará um lugar para começar a pesquisar.


0

Eu tive esse problema em uma sessão SSH e resolvi-o efetuando logout e novamente novamente:

exit
ssh ...

Obrigado por comentar. A resposta selecionada sempre funcionou para mim. Tentaste?
Svidgen 19/10/19

Sim, a solução aceita não funcionou no Ubuntu 18. Eu até desinstalei e reinstalei o vim (na mesma sessão ssh) e sem dados. Somente o logoff e a funcionalidade de seta restaurada foram restauradas novamente.
Duhaime

0

Eu tive esse problema quando usei uma "variável de ambiente do sistema" no Windows, definindo TERMcomo xterm-256color. O problema desapareceu (e eu vimretornei ao normal) quando excluí a variável novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.