Vim a través de Vnc: teclas del teclado numérico que insertan caracteres inesperados

Vim a través de Vnc: teclas del teclado numérico que insertan caracteres inesperados

Esta pregunta encaja con¿Cómo hago para que el teclado numérico funcione en vim usando iterm2 en osx con term=xterm?y¿Cómo hago para que el teclado numérico funcione en vim usando iterm2 en osx con term=xterm?pero no pude encontrar los elementos descritos en esas respectivas respuestas.

Estoy accediendo a un cuadro de Linux a través de VNC desde un cuadro de Windows.

En el cuadro de Linux, a través de esta sesión de VNC, estoy editando en Vim, y en modo de inserción, cuando escribo '/' y '*' desde el teclado numérico (es decir, para iniciar un comentario estilo C), los caracteres ' En su lugar, se insertan o' y 'j' (específicamente, parece que se inserta un retorno de carro, luego se inserta la 'o' o la 'j' en la primera tabulación).

Las preguntas y respuestas que noté parecen específicas de MacOs; por ejemplo, entre el terminal que se ejecuta en la máquina Linux y las Preferencias de VNC, no pude encontrar ninguna referencia a "xterm con teclado numérico".

¿Alguien puede aconsejarme cómo solucionar este problema en el entorno descrito? No tengo claro si la fuente de este comportamiento es Vim, el terminal o VNC.

Aquí están $TERMla versión de Vim y .vimrc, si son 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

Actualizar: Otro factor probablemente relevante: estoy ejecutando tmux encima de mi shell bash. Mi .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

Respuesta1

PD: obtuve esta información en la red y no pude encontrar el enlace de origen ahora.

  1. Cree el siguiente archivo en alguna ubicación común:

    $ 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. Asignar las nuevas asignaciones

    $ xmodmap fix_numpad
    

NOTA: Puede agregar esto a su ~/.vnc/xstartuparchivo para que sus asignaciones siempre se conserven.

Respuesta2

La pregunta implica que estás usando xtermy deseas cambiar el modo de teclado de la aplicación anormal(mientras se ha configurado ensolicitud). Para xterm, siempre puede activar o desactivar los modos de aplicación a través de una entrada del menú "Opciones de VT" (control-clic central del mouse):

Esas entradas del menú se seleccionan (con una marca de verificación) cuando están enmodo de aplicación.

xtermusa la información del código clave para saber si se presiona una tecla del teclado y usa el modo normal/aplicación para decidir qué enviar para esa tecla.

Respuesta3

La única forma de solucionar esto que he encontrado es modificar la TERMvariable de entorno dentro de tmux:

setenv TERM xterm

(Estoy en tcsh, para mi consternación)

Sin embargo, esta NO es una solución recomendada a largo plazo.Los desarrolladores de tmux dicen que es probable que se produzcan problemas de visualización. Se está comportando bien para mí en este momento, pero definitivamente será una cosa "cuando sea necesario": me encantaría escuchar una solución mejor.

Respuesta4

Estoy usando x11vnc como servidor y Tigervnc como visor. el mismo problema.

Lo he arreglado con setxkbmap -option 'numpad:microsoft'.

información relacionada