macos - mac os X 上的 vim 功能键映射不起作用

标签 macos vim

我最近开始使用 Mac OS X Lion 系统并尝试在终端中使用 Vim。我以前在我的 Ubuntu 系统中有一个 .vimrc 文件,并将 F2 和 F5 键映射到 pastetoggle 并运行 python 解释器。这是我的两行:

set pastetoggle=<F2>
map <buffer> <F5> :wa<CR>:!/usr/bin/env python % <CR>

它在 Ubuntu 中运行良好,但在 Mac 中不再有效。 (上面两行在我家目录下的 .vimrc 中。)我在我的偏好中关闭了 Mac 特定的功能,所以功能键没有被用于音量之类的东西。现在按 F5 似乎将所有字母大写直到下一个单词,而 F2 似乎删除下一行并插入 O .....

我还需要做些什么才能让它按预期工作?

此外,我一直使用solarized 作为我的配色方案,并尝试在Mac 中使用相同的配色方案。似乎正在从 .vimrc 读取方案命令,但颜色仍然是默认颜色。即使 .vim/colors 文件和以前一样。这是我需要修复的相关错误吗?也许在我自己的之后正在读取另一个设置文件? (我寻找 _vimrc 和 .gvimrc,都不存在。)

谢谢!

最佳答案

我终于通过添加这样的映射来使我的函数映射工作:

if has('mac') && ($TERM == 'xterm-256color' || $TERM == 'screen-256color')
  map <Esc>OP <F1>
  map <Esc>OQ <F2>
  map <Esc>OR <F3>
  map <Esc>OS <F4>
  map <Esc>[16~ <F5>
  map <Esc>[17~ <F6>
  map <Esc>[18~ <F7>
  map <Esc>[19~ <F8>
  map <Esc>[20~ <F9>
  map <Esc>[21~ <F10>
  map <Esc>[23~ <F11>
  map <Esc>[24~ <F12>
endif

如果您需要验证这些转义序列是否与您的终端匹配或设置您自己的转义序列,则这些问题的答案很有帮助:

mapping function keys in vim
Binding special keys as vim shortcuts

这可能取决于终端模拟器的行为一致(大笑),但@Mark Carey 的建议对我来说还不够(我希望它如此简单)。在 OS X 上使用 iTerm2,我已经为 xterm-256color 配置了它和 tmux 用于 screen-256color ,并且函数映射仍然不起作用。所以has('mac')如果来自 iTerm2 的这些序列符合 xterm 标准,则可能是不必要的,我还没有检查,所以现在将它留在我自己的配置中。

你可能想要一些 imap版本也是如此。请注意,您不应该使用 noremap变种,因为你希望这些映射级联(触发您映射 <Fx> 到的任何内容)。

关于macos - mac os X 上的 vim 功能键映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373710/

相关文章:

vim - 如何绑定(bind)键映射以将选定的文本保存到 vim 中的文件?

Xcode 10.3 不适用于 MacOS Big Sur 11.0.1(非测试版)

swift - 发送 UDP 数据包的问题(milight,limitlessled)

macos - 使用 swift 读取 CFDictionary 中的值

macos - 在 Mac OS X 上以编程方式为 Matplotlib 选择正确的后端

vim - Gvim 无法正确突出显示语法,如何修复?

macos - 在 Interface Builder MacO 中从 localized.strings 获取字符串

python - 如何设置我创建的任何 Vim 文件默认附加 #!/usr/bin/env python

vim - 如何使用 Vim 插件 VCSCommand 在目录上 diff/commit/etc ? (或者...什么是 VIm "directory buffer"?)

python - Vim 插件并不总是加载?