Vim über Vnc: Nummernblocktasten fügen unerwartete Zeichen ein

Vim über Vnc: Nummernblocktasten fügen unerwartete Zeichen ein

Diese Frage geht einher mitWie bekomme ich den Nummernblock in Vim mit iterm2 auf OSX mit term=xterm zum Laufen?UndWie bekomme ich den Nummernblock in Vim mit iterm2 auf OSX mit term=xterm zum Laufen?aber ich konnte in den jeweiligen Antworten keine beschriebenen Elemente finden.

Ich greife von einer Windows-Box über VNC auf eine Linux-Box zu.

Auf der Linux-Box bearbeite ich während dieser VNC-Sitzung in Vim, und wenn ich im Einfügemodus „/“ und „*“ über den Ziffernblock eingebe (um also einen Kommentar im C-Stil zu beginnen), werden stattdessen die Zeichen „o“ und „j“ eingefügt (genauer gesagt scheint ein Wagenrücklauf eingefügt zu werden, dann wird das „o“ oder „j“ am ersten Tabulatorstopp eingefügt).

Die Fragen und Antworten, die ich notiert habe, scheinen MacOs-spezifisch zu sein. Beispielsweise konnte ich zwischen dem auf der Linux-Box laufenden Terminal und den VNC-Einstellungen keinen Verweis auf „xterm mit Ziffernblock“ finden.

Kann mir jemand einen Rat geben, wie ich dieses Problem in meiner beschriebenen Umgebung beheben kann? Mir ist nicht klar, ob die Ursache dieses Verhaltens Vim, das Terminal oder VNC ist.

Hier sind $TERM, Vim-Version und .vimrc, falls relevant:

>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

Aktualisieren: Ein weiterer wahrscheinlich relevanter Faktor: Ich führe tmux auf meiner Bash-Shell aus. Meine .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

Antwort1

PS: Ich habe diese Informationen im Internet gefunden und konnte den Quellenlink jetzt nicht finden.

  1. Erstellen Sie die folgende Datei an einem gängigen Speicherort:

    $ 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. Zuweisen der neuen Zuordnungen

    $ xmodmap fix_numpad
    

HINWEIS: Sie können dies zu Ihrer ~/.vnc/xstartupDatei hinzufügen, damit Ihre Zuordnungen immer erhalten bleiben.

Antwort2

Die Frage setzt voraus, dass Sie verwenden xtermund den Tastaturmodus der Anwendung aufnormal(während es aufAnwendung). xtermSie können die Anwendungsmodi jederzeit über einen Menüeintrag im Menü „VT-Optionen“ (Strg-Mitte-Mausklick) ein- und ausschalten:

Diese Menüeinträge sind ausgewählt (mit einem Häkchen versehen), wenn sie sich inAnwendungsmodus.

xtermverwendet die Tastencodeinformationen, um festzustellen, ob eine Taste auf der Tastatur gedrückt wurde, und verwendet den Normal-/Anwendungsmodus, um zu entscheiden, was für diese Taste gesendet werden soll.

Antwort3

Die einzige Möglichkeit, dies zu umgehen, die ich gefunden habe, besteht darin, die TERMUmgebungsvariable in tmux zu ändern:

setenv TERM xterm

(Ich bin in Tcsh, sehr zu meinem Bedauern)

Dies ist jedoch KEINE empfehlenswerte Langzeitlösung.Die tmux-Entwickler sagen, dass wahrscheinlich Anzeigeprobleme auftreten werden. Im Moment funktioniert es bei mir, aber das wird definitiv eine „bei Bedarf“-Sache: Ich würde gerne eine bessere Lösung hören.

Antwort4

ich verwende x11vnc als Server und Tigervnc als Viewer. Gleiches Problem.

ich habe es mit behoben setxkbmap -option 'numpad:microsoft'.

verwandte Informationen