web-dev-qa-db-ja.com

VimからVnc:予期しない文字を挿入するテンキー

この質問は、 term = xtermを使用してosxでiter2を使用してテンキーをvimで動作させるにはどうすればよいですか? および osxでiterm2を使用してvimでテンキーを動作させるにはどうすればよいですか?) term = xterm? しかし、それぞれの回答に記載されている要素が見つかりませんでした。

WindowsボックスからVNCを介してLinuxボックスにアクセスしています。

Linuxボックスでは、このVNCセッションを介して、Vimで編集しており、挿入モードで、テンキーから「/」と「*」を入力すると(つまり、Cスタイルのコメントを開始するため)、文字「」代わりにo 'と' j 'が挿入されます(具体的には、キャリッジリターンが挿入されているように見え、最初のタブストップに' o 'または' j 'が挿入されます)。

私が指摘した質問と回答はMacO固有のようです。例えばLinuxボックスで実行されている端末とVNCの設定の間で、「xterm withNumericKeypad」への参照が見つかりませんでした。

誰かが私の説明した環境でこの問題を修正する方法をアドバイスできますか?この動作の原因が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

更新:もう1つのおそらく関連する要因:bashシェル上で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
2
StoneThrow

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ファイルに追加して、マッピングが常に保持されるようにすることができます。

1
m_r_nadh

私が見つけたこれを回避する唯一の方法は、tmux内のTERM環境変数を変更することです。

setenv TERM xterm

(私はtcshにいますが、非常に残念です)

ただし、これは推奨される長期的な解決策ではありません。 tmux開発者は表示の問題が発生する可能性が高いと言っています 。現時点では動作していますが、これは間違いなく「必要な場合」になります。より良い解決策を聞きたいと思います。

0
spookypeanut

この質問は、xtermを使用していて、アプリケーションのキーパッドモードをnormalに変更したいことを意味します( アプリケーション)。 xtermの場合、[VTオプション]メニューのメニューエントリ(control-middle-mouse click)を使用して、いつでもアプリケーションモードのオン/オフを切り替えることができます。

これらのメニューエントリは、アプリケーションモードのときに(チェックマーク付きで)選択されます。

xtermは、キーコード情報を使用してキーパッドキーが押されたかどうかを通知し、通常/アプリケーションモードを使用してそのキーの送信先を決定します。

0
Thomas Dickey