【问题标题】:How to set Meta-Function key combination in Vim?如何在 Vim 中设置 Meta-Function 组合键?
【发布时间】:2010-11-22 02:10:08
【问题描述】:

我需要在非 gui 模式下重新定义 Vim 的键盘映射。

我只是不明白为什么以下命令不起作用:

:set <M-F5>=^[[15~

"E518: Unknown option: <M-F5>=^[[15~"

而单独的 F5 键或 Meta 与非功能键的映射确实有效:

:set <F5>=^[[15~

"ok"

:set <M-space>=^[[15~

"ok"

如何在 Vim 中使用功能键 F1-F12 重新定义 Alt/Meta?

提前致谢。

大卫

更新:问题更正 在我的 .vimrc 中,我有以下组合键映射

autocmd Filetype python noremap <buffer> <silent> <M-F9> :w !pylint -E %<CR>

但它只在 gVim 中有效。 不幸的是,它在非 gui 版本的 Vim 中不起作用,因为 Vim 收到转义序列 "^[[20~" 而不是直接的 Meta-F9 键码。

【问题讨论】:

  • 真的set可以用来映射key吗?我使用map:map &lt;Ctrl+V&gt;&lt;Desired_key_combination&gt; &lt;commands&gt;.
  • 对不起,我的意思是重置键码组合,而不是映射。我很抱歉。

标签: vim


【解决方案1】:

这是来自 Vim wiki 的示例:

inoremap <M-i> <Tab>

看这里:

如果这不起作用,试试这个:

inoremap <ESC>i <Tab>

请注意,这是一个 hack,会产生一些你可能不得不忍受的奇怪的东西。

对于功能键,这样的东西应该可以工作:

nnoremap <ESC><F9> :ls<CR>

【讨论】:

  • 我担心这不是我问题的答案。
  • 好的,让我看看我是否理解 - 你想重新定义像 Alt-F1 这样的键来执行一些操作吗?如果是这样,您可以使用 :nnoremap &lt;ESC&gt;&lt;F3&gt; :ls&lt;CR&gt; 之类的东西来映射 Alt-F3 以列出所有缓冲区。这是你想要的还是不想要的?
  • 我通常使用 noremap 组合键进行映射以运行某些操作。它确实在 GUI 模式 (gVim) 下工作,因为它直接映射 Alt/Meta 键。然而,Xterm(非 gui)中的 vim 将 Meta 按键识别为转义序列。我需要设置 来转义序列,然后映射它。
  • 我找到了解决方案,但仅从 Meta-a 到 Meta-z 键绑定。如何为功能键 F1-F12 扩展它? >>> 代码 >>> " 重新映射损坏的元键,发送 ^[ for n in range(97,122) " ASCII a-z let c = nr2char(n) exec "set =\e"。 c 执行“地图\ e”。 c ." " exec "地图!\e"。 c ." " endfor
  • 我每天都使用 Vim,并按照我的建议映射元键,它工作得很好。没有set 参与映射。不过,我不使用功能键,因为它们都映射到 Gnome 操作(例如 Alt-F2 打开运行应用程序对话框,Alt-F7 是窗口移动等)。如果您尝试:map &lt;ESC&gt;q :ls&lt;CR&gt;,它可以正常工作(即Alt-q 成为调用:ls 的快捷方式)。在终端中试用并确认它有效。也许我的意思是 - 元映射工作正常,我也知道映射功能键单独工作正常,所以唯一可能出错的是它们的组合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多