【问题标题】:alt-key binds in Vim: <A-D> won't work but <A-S-D> doesVim 中的 alt 键绑定:<A-D> 不起作用,但 <A-S-D> 起作用
【发布时间】:2013-08-09 18:57:46
【问题描述】:

我将 yankstack 绑定到这些键:

(注意这里的^[ 是使用 ctrl+v 输入的原始字符)

set <A-D>=^[d                                      
set <A-S-D>=^[D                                    
nmap <A-D> <Plug>yankstack_substitute_older_paste  
nmap <A-S-D> <Plug>yankstack_substitute_newer_paste

&lt;A-S-D&gt; 被正确解释,但&lt;A-D&gt; 不是。

奇怪的是,如果我输入:set &lt;A-D&gt;,我会返回

     <Ä>        ^[D                    

所以不知何故,vim 似乎认为 alt+d 等同于当我键入 Alt+D 时我的终端没有发送的东西。

我不得不抓住另一个高 F 键(我最终会用完的那组)才能让它工作:

set <F26>=^[d                                      
set <A-S-D>=^[D                                    
nmap <F26> <Plug>yankstack_substitute_older_paste  
nmap <A-S-D> <Plug>yankstack_substitute_newer_paste

有人知道这是怎么回事吗?

【问题讨论】:

  • 看看 Ingo 对类似问题的回答 stackoverflow.com/a/16360104/1890567
  • 如果你把它称为&lt;A-d&gt;而不是&lt;A-D&gt;会发生什么?
  • @echristopherson 它为:set &lt;A-d&gt;显示这个:&lt;ä&gt; ^[d
  • @FDinoff 您链接的答案在回答这个问题方面并没有提供太多帮助,但从该答案链接的讨论非常有启发性(尽管遗憾的是已经将近 3 年了)。谢谢
  • 你可能想看看vim-fixkey。特别是 Mike 博士的一些documentation。问题可能是糟糕的配置(TERM 设置错误加上 Vim 试图解决它)。

标签: linux vim terminal


【解决方案1】:

注意&lt;A-D&gt;中的大写D; Vim 对待它和&lt;A-S-D&gt; 一样。尝试使用小号d

set <A-d>=^[d                                      
nmap <A-d> <Plug>yankstack_substitute_older_paste  

【讨论】:

  • 人们可能倾向于假设这一点。但鉴于我的描述,这显然是错误的。你甚至读过我写的东西吗? &lt;A-S-D&gt; 绑定完美无缺,而 &lt;A-D&gt; 绑定无论我设置什么终端序列都会失败,因为 Vim 认为它是带有变音符号的 a-with-umlaut 字符。此外,这个答案是完全错误的,因为我从未见过 Vim 以不同的方式对待不同的变体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2018-08-11
  • 1970-01-01
相关资源
最近更新 更多