gpt4 book ai didi

vim - 我怎样才能看到 vim 认为我在敲什么键?

转载 作者:行者123 更新时间:2023-12-04 15:02:15 24 4
gpt4 key购买 nike

有什么办法可以得到 xev - 类似模式,我可以按键和组合键,vim 会打印出它认为我正在按下的键或字符?

具体相关问题:我有在 MacVim 和 GVim 中工作的键绑定(bind),但它们在终端 vim 中不起作用,我在 Linux 上通过屏幕内的 SSH 使用它。我得出的结论是,原因是 vim 认为我按下的键与 MacVim 对它们的解释不同。

在我的 .vimrc 中:

map <M-,> :split<CR> " Horizontal split
map <M-.> :vsplit<CR> " Vertical split
map <M-/> :close<CR>

在我的 vim 的 :map (MacVim 显示相同):
¯             :close<CR><Space>
® :vsplit<CR> " Vertical split
¬ :split<CR> " Horizontal split

它适用于 MacVim 和 GVim,但不适用于任何基于终端的 vim。我已经在多个终端(OSX 终端和 Term2、KDE ​​终端、Gnome 终端等)中进行了尝试。我也用其他修饰符和键组合见证了这一点。似乎 vim 正在捕获击键,但它会将它们解释为 <M-,> 以外的其他内容。例如。

我很想有办法找出 vim 认为我在按什么,以便我可以相应地编写映射。

最佳答案

  • i切换到插入模式。
  • <C-v> .
  • <key>或组合。
  • Vim 打印你按下的键/组合的“原始”值。

  • 在这里(Ubuntu 11.04 上的 Gnome 终端),输入 i<C-v> ,后跟 <Alt> ,后跟 ,打印看起来像 ^[, 的东西这意味着“逃脱”。 Alt key (我相信这是您想要用于 <Meta> 的)既不被识别为 <Meta>也不像 <Alt> .

    直接的结论是 CLI Vim 不喜欢 <M-> (无论如何,许多终端仿真器都不能很好地处理它)。一些终端仿真器允许您映射 <Alt> Meta 的 key 但这不是一个完美的跨平台解决方案(我在 Mac OS X 上经常使用 <Alt> 来输入特殊字符)。

    在这台机器上,
    nnoremap ^[, :split<CR> " ^[ is <C-v><Esc>

    不过,这正是我认为你想要的。

    如果您绝对想继续使用 <M-> GUI 和 CLI 中的快捷方式,您需要维护两组独立的快捷方式。如果您的 .vimrc 中有几十个自定义映射,它很快就会变得有点难以管理。

    这就是为什么我认为您应该使用在任何地方都可以使用的映射,例如:
    :nnoremap <leader>, :split<CR>
    :nnoremap <leader>. :vsplit<CR>
    :nnoremap <leader>/ :close<CR>

    默认 <leader>关键是 \但我已将其设置为 , .

    请注意,您不需要使用 <leader>key , 简单映射 ,, , ,.,/也有效。

    :help <leader> .

    关于vim - 我怎样才能看到 vim 认为我在敲什么键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com