2026-03-11 下午 16:20,运维群里同事说在跳板机上改 /etc/security/limits.conf,按方向键屏幕上蹦出大写字母。跳板机 Debian 12.5,内核 6.1.0-18-amd64,SecureCRT 连的。

光标停在行尾,按一下上方向键,文件里多出几行:

* soft nofile 65535
A
B
C
D

本来要加两行 nofile,结果方向键全成了 A B C D。文件被 :wq 存下去,里面多了四行字母。

先看终端类型:

$ echo $TERM
xterm-256color
$ infocmp xterm-256color | wc -l
217

terminfo 是全的。把 SecureCRT 里 Terminal → Emulation 的 Application Cursor Keys 那个勾去掉,重连,方向键照样出 A。本地 gnome-terminal ssh 上去,一样。

$ readlink -f $(which vi)
/usr/bin/vim.tiny
$ dpkg -l | grep vim
ii  vim-common   2:9.0.1378-2   all    Vi IMproved - Common files
ii  vim-tiny     2:9.0.1378-2   amd64  Vi IMproved - enhanced vi editor - compact version

vi 是个软链,指到 vim.tiny,这台机器只装了 tiny。方向键的 ESC [ A 序列在这种模式下没被当按键处理。

同事想直接装完整版 vim,Apt 源是公司内网的:

$ apt-get install -y vim
Reading package lists... Done
Building dependency tree... Done
E: Unable to locate package vim

内网镜像只同步了 vim-tiny。又想用 sed 把两行 nofile 塞进文件,可这两行得插在 “# End of file” 前面,中间夹着好几种分组注释,匹配上下文得写一长串正则,写到一半停手了。

把键位映射写进 /root/.vimrc:

$ cat /root/.vimrc
map <Esc>[A k
map <Esc>[B j
map <Esc>[C l
map <Esc>[D h

普通模式下方向键能上下移动了。插入模式下按方向键仍然插 A B C D,按一次 Esc 再 u 撤掉那三个字符,i 回到插入接着打。limits.conf 里那两行 nofile 是用 hjkl 挪过去敲的,没再多出字母。

vi 到现在还是指向 vim.tiny,/root/.vimrc 留着,换新跳板机先把这个文件 scp 过去。

参考:vim 官方文档 vimdoc.sourceforge.net,Debian 包页面 packages.debian.org/vim-tiny

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。