首页 > 解决方案 > vim urxvt ttymouse HOME 和 END

问题描述

我真的不喜欢鼠标集成,vim所以我最近在我.vimrc的禁用mousettymouse. 这解决了我的鼠标问题,但引入了一个新问题。HOME并且END曾经在 vim 中工作,但在添加这两个指令后它们不再工作。现在,这两个键不再移动光标,而是(1)对光标没有明显影响,但阻止进一步的命令工作,直到ESC被按下,(2)用 替换光标下的文本~,(3)更改光标下任何内容的大小写。

我不知道为什么关闭与鼠标相关的集成会中断HOME/END但我想修复它们。一些研究表明,这可能与 TERM 变量的设置方式有关。我正在使用rxvt-unicode. 我已经rxvt-unicode-terminfo安装了。TERMrxvt-unicode-256color。我没有在我的 shell RC 中手动设置它,它是在 urxvt fork 时设置到我的 shell 环境中的。

根据Arch wiki,我向我添加了指令,~/.Xresources但在vim通过xrdb ~/.Xresources. 值得注意的是HOME/END无论nano有没有 ~/.Xresources 中的指令,两者都可以正常工作。

如果我切换到 atty并运行showkey --scancodes,我会得到以下信息:

0xe0 0x47 0xe0 0xc7  # Home
0xe0 0x4f 0xe0 0xcf  # End
% cat /etc/vimrc 
runtime! archlinux.vim
set number
set paste
filetype indent off

% cat /usr/share/vim/vimfiles/archlinux.vim
if &compatible
  set nocompatible
endif

set backspace=indent,eol,start
set ruler
set suffixes+=.aux,.bbl,.blg,.brf,.cb,.dvi,.idx,.ilg,.ind,.inx,.jpg,.log,.out,.png,.toc
set suffixes-=.h
set suffixes-=.obj

" Move temporary files to a secure location to protect against CVE-2017-1000382
if exists('$XDG_CACHE_HOME')
  let &g:directory=$XDG_CACHE_HOME
else
  let &g:directory=$HOME . '/.cache'
endif
let &g:undodir=&g:directory . '/vim/undo//'
let &g:backupdir=&g:directory . '/vim/backup//'
let &g:directory.='/vim/swap//'
" Create directories if they doesn't exist
if ! isdirectory(expand(&g:directory))
  silent! call mkdir(expand(&g:directory), 'p', 0700)
endif
if ! isdirectory(expand(&g:backupdir))
  silent! call mkdir(expand(&g:backupdir), 'p', 0700)
endif
if ! isdirectory(expand(&g:undodir))
  silent! call mkdir(expand(&g:undodir), 'p', 0700)
endif

" Make shift-insert work like in Xterm
if has('gui_running')
  map <S-Insert> <MiddleMouse>
  map! <S-Insert> <MiddleMouse>
endif

% cat ~/.vimrc 
set ttymouse=
set mouse=
% cat ~/.Xresources 
URxvt.font: xft:Noto Sans Mono:size=12, xft:Font Awesome 5 Free,Font Awesome 5 Free Solid:style=Solid
URxvt.scrollBar: false
URxvt.scrollBar_right: true
URxvt.perl-ext-common: selection-to-clipboard
URxvt.keysym.Control-Shift-C: perl:keyboard-select:activate
URxvt.clipboard.autocopy: true
URxvt.background: black
URxvt.foreground: white
URxvt.visualBell: true
URxvt.keysym.Home: \033[1~
URxvt.keysym.End: \033[4~
URxvt.keysym.KP_Home: \033[1~
URxvt.keysym.KP_End:  \033[4~

标签: vimescapingxserverurxvt

解决方案


推荐阅读