:map <A-j> j
:map <A-k> k
但这不起作用(贝尔按Alt + j / Alt + k响了)。
我缺少什么?
我在OSX上使用Terminal,在远程Linux上也是如此。 + v,Alt + j,我得到:
?~H~F
(∆
当encoding=utf-8
时)。 /> 在没有插件的情况下运行vim(
?~Z
)没有任何区别。#1 楼
这就是我在Linux或Cygwin上执行的操作:首先检查按ALT + J时终端发送的字符:
为了执行此操作,请转到控制台并运行
sed -n l
(也可以使用cat
)。然后按ALT + J,然后看屏幕上的字符是^[j
。是^[
。然后我将其写到我的
\e
:评论
我找不到:set
– Evgeni Sergeev
2015年6月3日,下午1:05
感谢您的回答,这是唯一对我有用的解决方案,带有Iterm + vim
– newUserName此处
15年6月22日在14:33
不,这不起作用。有时ESC-J将充当ALT-J
–user3751385
16-10-4在5:15
@EvgeniSergeev请参阅:help:set-termcap
–丰富
18年2月15日在22:10
#2 楼
在Carpetsmoker的帮助下,似乎没有将终端配置为“使用Alt / option作为元键”(这对于GUI终端尤为常见)。对于OSX上的终端,它位于“首选项”->“设置”->“键盘标签->“将选项用作元键”。检查:如何更改终端以将选项用作元密钥? (Mavericks)。对于XTerm,请检查:将XTerm配置为默认到Meta Sends Escape,它说:
xterm*metaSendsEscape: true
然后用xrdb重新加载配置。没有此步骤,
~/.Xdefaults
中的更改将在下一次X重新启动之前生效:xrdb -l ~/.Xdefaults
然后使用带有Alt键的标准映射,例如:
:map <A-j> j
:map <A-k> k
。
有关帮助,请参阅:
.Xdefaults
。评论
可能还想将:h:map-alt-keys视为另一信息来源
– Peter Rincker
2015年3月4日在17:02
#3 楼
与Kossak的答案类似,但通过映射文字按键来简化。nnoremap
然后按Ctrl + V,然后击键进行记录,例如Alt +←。这将显示为以下内容:
nnoremap ^[[1;3D
,但是每个
.vimrc
都是一个单独的文字转义字符,语法突出显示应显示此内容。将文字转义符替换为文本^[
,并追加您要使用的命令: ,但我使用箭头显示了如何处理默认情况下可能未映射的内容。评论
像魅力一样工作,非常感谢!
–aryndin
19-10-24在9:11
这正是我想要的。我不知道是什么vim将我想要的键组合解释为什么,这向您显示。谢谢!
–雅各布·埃文·史瑞夫(Jacob Evan Shreve)
20-11-25在22:55
#4 楼
这适用于我在Ubuntu 16.04 xfce终端(以及alacritty rust终端)上的功能将ultisnip片段触发器设置为
Meta-/
(就像emacs片段一样) />现在我在vim中键入^[/
在插入模式下
Ctrl-V Alt-/
(
Meta
是PC键盘上的Alt
键)#5 楼
如果Control+V
后跟ALT-x
显示^[x
(在终端中键入),则可以使用vim.wikia.com上的此小脚本对其进行修复:for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
alt键映射。
评论
Alt(按住不按住)然后j起作用吗?至少使用xterm,我需要将metaSendsEscape设置为true才能使这些序列正常工作...我不知道您是否遇到相同的问题,并且我不使用OSX因此无法进行测试...@Carpetsmoker按Alt释放,然后按j或其他任何键都可以正常工作。我已经检查并找到了“使用选项作为元键”选项,并将其启用,并且现在可以使用。因此,设置metaSendsEscape可以解决问题,谢谢。
以前曾在以下位置回答过此问题(并获得了较好的答复):stackoverflow.com/questions/6778961/…