Vim através do Vnc: teclas do teclado numérico inserindo caracteres inesperados

Vim através do Vnc: teclas do teclado numérico inserindo caracteres inesperados

Esta questão se encaixaComo faço para que o teclado numérico funcione no vim usando iterm2 no osx com term=xterm?eComo faço para que o teclado numérico funcione no vim usando iterm2 no osx com term=xterm?mas não consegui encontrar os elementos descritos nessas respectivas respostas.

Estou acessando uma caixa Linux através do VNC a partir de uma caixa Windows.

Na caixa Linux, através desta sessão VNC, estou editando no Vim, e no modo de inserção, quando digito '/' e '*' no teclado numérico (ou seja, para iniciar um comentário estilo C), os caracteres ' o' e 'j' são inseridos em vez disso (especificamente, um retorno de carro parece ser inserido, então o 'o' ou 'j' é inserido na primeira parada de tabulação).

As perguntas e respostas que anotei parecem específicas do MacOs; por exemplo, entre o terminal em execução na caixa Linux e as Preferências do VNC, não consegui encontrar nenhuma referência a "xterm com teclado numérico".

Alguém pode aconselhar como corrigir esse problema no ambiente descrito? Não estou claro se a origem desse comportamento é o Vim, o terminal ou o VNC.

Aqui estão $TERMa versão do Vim e o .vimrc, se forem relevantes:

>vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Dec 21 2016 15:22:28)

>echo $TERM
screen-256color

>cat ~/.vimrc
set backspace=indent,eol,start
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab
filetype plugin indent on
autocmd FileType make set noexpandtab shiftwidth=4 softtabstop=0
set cino+=(0
set statusline=
set statusline +=\[%n] "buffer number
set statusline +=\%F   "File
set statusline +=%=%l/%L "currentLine/totalLine
set statusline +=%4v "virtual column
set laststatus=2
set t_Co=256
colorscheme torte
set number
"let g:netrw_liststyle = 3
syntax on

Atualizar: Um outro fator provavelmente relevante: estou executando o tmux no topo do meu shell bash. Meu .tmux.conf:

>cat ~/.tmux.conf 
unbind C-b
set -g prefix C-a
bind C-a send-prefix
set-window-option -g mode-keys vi
set -g set-titles on
set-window-option -g automatic-rename off
set-option -g allow-rename off

Responder1

PS: Peguei essa informação na net e não consegui encontrar o link da fonte agora.

  1. Crie o seguinte arquivo em algum local comum:

    $ cat fix_numpad 
    ! initialization, 
    ! Ensure that we have all keysyms we're going to use assigned to something. 
    
    keycode any = KP_Insert 
    keycode any = KP_End 
    keycode any = KP_Down 
    keycode any = KP_Next 
    keycode any = KP_Left 
    keycode any = KP_Begin 
    keycode any = KP_Right 
    keycode any = KP_Home 
    keycode any = KP_Up 
    keycode any = KP_Prior 
    keycode any = KP_Delete 
    
    ! Set the keypad to numeric mode. 
    ! You may need to adjust KP_Next/KP_Prior; possible alternatives 
    ! are KP_Page_Down/KP_Page_Up or just Next/Prior. 
    ! just Next. 
    keysym KP_Insert = KP_0 
    keysym KP_End    = KP_1 
    keysym KP_Down   = KP_2 
    keysym KP_Next   = KP_3 
    keysym KP_Left   = KP_4 
    keysym KP_Begin  = KP_5 
    keysym KP_Right  = KP_6 
    keysym KP_Home   = KP_7 
    keysym KP_Up     = KP_8 
    keysym KP_Prior  = KP_9 
    keysym KP_Delete = KP_Decimal
    
    $
    
  2. Atribuir os novos mapeamentos

    $ xmodmap fix_numpad
    

NOTA: Você pode adicionar isso ao seu ~/.vnc/xstartuparquivo para que seus mapeamentos sejam sempre mantidos.

Responder2

A pergunta implica que você está usando xterme deseja alterar o modo do teclado do aplicativo paranormal(embora tenha sido definido paraaplicativo). Para xterm, você sempre pode ativar/desativar os modos de aplicação através de uma entrada de menu no menu "Opções de VT" (controle-clique do meio do mouse):

Essas entradas de menu são selecionadas (com uma marca de seleção) quando estão nomodo de aplicação.

xtermusa as informações do código-chave para informar se uma tecla do teclado foi pressionada e usa o modo normal/aplicativo para decidir o que enviar para essa tecla.

Responder3

A única maneira de contornar isso que encontrei é modificar a TERMvariável de ambiente no tmux:

setenv TERM xterm

(Estou em tcsh, para minha consternação)

No entanto, esta NÃO é uma solução recomendada a longo prazo.Os desenvolvedores do tmux dizem que é provável que ocorram problemas de exibição. Está funcionando para mim no momento, mas definitivamente será uma coisa "quando necessário": eu adoraria ouvir uma solução melhor.

Responder4

estou usando x11vnc como servidor e Tigervnc como visualizador. mesmo problema.

eu consertei isso com setxkbmap -option 'numpad:microsoft'.

informação relacionada