这个问题与如何在 osx 上通过 term=xterm 的 iterm2 让数字键盘在 vim 中工作?和如何在 osx 上通过 term=xterm 的 iterm2 让数字键盘在 vim 中工作?但我找不到相应答案中描述的元素。
我正在从 Windows 机器通过 VNC 访问 Linux 机器。
在 Linux 机器上,通过这个 VNC 会话,我在 Vim 中进行编辑,在插入模式下,当我从数字键盘输入“/”和“*”(即启动 C 样式注释)时,会插入字符“o”和“j”(具体来说,似乎插入了回车符,然后在第一个制表位插入“o”或“j”)。
我记录的问题和答案似乎是 MacOs 特有的;例如,在 Linux 机器上运行的终端和 VNC 的“首选项”之间,我找不到任何关于“带有数字键盘的 xterm”的引用。
有人能建议如何在我描述的环境中解决这个问题吗?我不清楚这种行为的根源是 Vim、终端还是 VNC。
如果相关的话,这里是$TERM
Vim 版本和 .vimrc:
>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
更新: 另一个可能相关的因素:我在 bash shell 上运行 tmux。我的 .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
答案1
附言:我在网上找到这个信息,但现在找不到源链接。
在一些常见位置创建以下文件:
$ 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 $
分配新映射
$ xmodmap fix_numpad
注意:您可以将其添加到您的~/.vnc/xstartup
文件中,以便始终保留您的映射。
答案2
答案3
我发现解决此问题的唯一方法是修改TERM
tmux 中的环境变量:
setenv TERM xterm
(我很沮丧,我在 tcsh)
然而,这不是一个推荐的长期解决方案。tmux 开发人员表示可能会出现显示问题。目前它对我来说表现良好,但这绝对会是一个“当需要时”的事情:我很想听到更好的解决方案。
答案4
我使用 x11vnc 作为服务器,使用 tigervnc 作为查看器。同样的问题。
我已经用 修复了它setxkbmap -option 'numpad:microsoft'
。