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

评论(0)