Vim через Vnc: цифровые клавиши для вставки неожиданных символов
Этот вопрос согласуется с тем, как заставить 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
4 ответа
PS: я получил эту информацию в сети и не смог найти ссылку на источник сейчас.
Создайте следующий файл в некотором общем месте:
$ 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
файл, так что ваши отображения всегда сохраняются.
Я использую x11vnc в качестве сервера и TigerVNC в качестве средства просмотра. та же проблема.
я исправил это с помощьюsetxkbmap -option 'numpad:microsoft'
.
Единственный способ обойти это, что я нашел, это изменить TERM
переменная окружения в tmux:
setenv TERM xterm
(Я в tcsh, к моему ужасу)
Однако это НЕ рекомендуемое долгосрочное решение. Разработчики tmux говорят, что могут возникнуть проблемы с отображением. Это ведет себя для меня в данный момент, но это определенно будет "когда требуется" вещь: я хотел бы услышать лучшее решение.
Вопрос подразумевает, что вы используете xterm
и хотите переключить режим клавиатуры приложения в обычный режим (пока он установлен в приложение). За xterm
, вы всегда можете включить / выключить режимы приложения через пункт меню в меню "VT Options" (управление-щелчок средней кнопкой мыши):
Эти пункты меню выбираются (с галочкой), когда они находятся в режиме приложения.
xterm
использует информацию о коде клавиши, чтобы сообщить ей, нажата ли клавиша на клавиатуре, и использует обычный режим / режим приложения, чтобы решить, что отправить для этой клавиши.