通过PuTTY在Vi(Vim)中使用数字键盘

135
当通过PuTTY使用Vim时,数字键盘无法正常工作。我会得到一些乱码而不是数字。
y
x
w
v
u
t
s
r
q
5个回答

209

答案在 Numpad in PuTTY while using vi [Cialug] 中:

在配置中,进入“终端”->“功能”,勾选“禁用应用程序小键盘模式”。保存设置,享受可用的数字键盘!


5
我也很想知道为什么它不是默认启用的。它是否会破坏其他应用程序中的数字键盘使用?http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter4.html#config-appkeypad顺便说一句,禁用应用程序键盘模式也可以解决在按数字键盘“+”时在bash中输入“,”。 - user323094
2
我想为iTerm用户添加一个简单的键映射解决方案(http://twitpic.com/97qyww)。 - Andy Barbour
2
@Pykler 这会禁用模拟终端的一个重要功能,因此默认情况下禁用它并不是一个好主意。令人难以理解的是,为什么Vim默认启用应用程序键盘模式,但不为这些键提供任何默认映射。 - Chris Page
11
在 Mac 终端应用程序中,尝试打开“偏好设置”--> “配置文件”--> “高级”--> 取消选中“允许 VT100 应用键盘模式”。 - HaPsantran
2
注意:Vim存在一个错误,即在没有定义任何映射的情况下启用应用程序键盘模式。我还没有找到这种行为的解释。Putty、终端和XTerm等其他终端正确地模拟了带有AKM的终端,并且Vim要求启用它,因此它被启用。 - Chris Page
谢谢你的回答!有趣的结果——禁用所有其他功能似乎没有任何负面影响,所以我将永久禁用它们。 - HoldOffHunger

17

$TERM=xterm时,我一直使用这套映射将转义序列解释为数字。

imap <Esc>Oq 1
imap <Esc>Or 2
imap <Esc>Os 3
imap <Esc>Ot 4
imap <Esc>Ou 5
imap <Esc>Ov 6
imap <Esc>Ow 7
imap <Esc>Ox 8
imap <Esc>Oy 9
imap <Esc>Op 0
imap <Esc>On .
imap <Esc>OR *
imap <Esc>OQ /
imap <Esc>Ol +
imap <Esc>OS -

我认为这是我的原始来源。


1
是的,你的链接和我的解决方案是一样的,就是在putty中禁用应用键盘模式,vim重新映射是有效的,但根据你的链接来看是不必要的。 - Pykler
@Pykler 我经常被迫在不是自己的机器上使用PuTTY,并且在我的常用机器上保存了十几个会话。vimrc映射消除了我在创建新会话或从陌生机器上工作时总是需要更改设置的需求。 - Michael Berkowski
你如何解决在所有通过ssh连接的机器上设置vim的问题?也许这是一个单独的问题,但我发现我的vimrc和zshrc很快就会不同步。此外,我并不经常使用Windows/putty,目前只在工作中使用一台机器 :) - Pykler
@Pykler 我通常只同步我的vim配置一次。我不在意它们是否失去同步,除了一两台重要的开发机器外,但我关心拥有一个包括这个和其他几个设置的基线配置。 - Michael Berkowski
我每年都要和30多名学生一起使用Putty中的Vim,因此对我来说更容易改变vimrc文件而不是告诉学生去更改他们的设置。所以对我来说这是一个有用的解决方案。 - Arpad Horvath -- Слава Україні

16
对于Mac,答案在此页面的同一位置HaPsantran 的评论中,而在这个答案中,nfechner 给出了类似的德文屏幕截图。

对于Mac,请进入您的终端应用程序。选择 偏好设置配置文件高级,然后取消选中允许 VT100 应用程序键盘模式

输入图片描述


5

如果您通过终端使用SSH,则可以直接转到

Edit -> Num Lock (third from bottom)

需要在它左侧有一个复选框。


5
什么语境?这与PuTTY(问题所涉及的内容)有关吗?你所谈论的是哪个应用程序?PuTTY没有“编辑”菜单。 “编辑”在哪里?是哪个应用程序?是在什么平台上?例如,Ubuntu应用程序“终端”没有名为“编辑”的菜单项。 - Peter Mortensen

3
前面的回答 kirby, michael-berkowski, pykler 都很好。
我在 macOS 终端上使用 Vim 时也遇到了这个问题。检查 终端偏好设置配置文件键盘,发现 "清除(小键盘)" 被映射为 "数字锁定"。按下清除键就解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接