Этот вопрос согласуется с тем, как заставить numpad работать в vim, используя iterm2 на osx с term = xterm? и как мне заставить numpad работать в vim, используя iterm2 на osx с term = xterm? но я не мог найти элементы, описанные в этих соответствующих ответах.

Я получаю доступ к Linux через VNC из Windows.

В Linux на этой сессии VNC я редактирую в Vim и в режиме вставки, когда я набираю '/' и '*' на цифровой клавиатуре (то есть, чтобы запустить комментарий в стиле C), символы ' o 'и' j 'вставляются вместо этого (в частности, кажется, что вставляется возврат каретки, затем' o 'или' j 'вставляется в первой позиции табуляции).

Вопросы и ответы, которые я отметил, кажутся специфичными для MacO; например, между терминалом, работающим на Linux, и настройками VNC, я не смог найти никакой ссылки на "xterm with Numeric Keypad".

Может кто-нибудь посоветовать, как исправить эту проблему в моей описанной среде? Мне неясно, является ли источником этого поведения 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

Обновление: еще один, вероятно, важный фактор: я запускаю tmux поверх моей оболочки bash. Мой .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

2 ответа2

0

PS: я получил эту информацию в сети и не смог найти ссылку на источник сейчас.

  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
    
    $
    
  2. Назначьте новые сопоставления

    $ xmodmap fix_numpad
    

ПРИМЕЧАНИЕ. Вы можете добавить это в файл ~/.vnc/xstartup чтобы ваши сопоставления всегда сохранялись.

0

Этот вопрос подразумевает, что вы используете xterm и хотите переключить режим клавиатуры приложения в нормальный режим (пока он установлен в приложение). Для xterm вы всегда можете включить / выключить режимы приложения с помощью пункта меню в меню "Параметры VT" (нажатие клавиши управления средней кнопкой мыши):

Эти пункты меню выбираются (с галочкой), когда они находятся в режиме приложения.

xterm использует информацию о коде клавиши, чтобы сообщить ей, нажата ли клавиша на клавиатуре, и использует обычный режим / режим приложения, чтобы решить, что отправить для этой клавиши.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .