如何在 Vim 中使 Shift+空格键向上翻页?

问题描述 投票:0回答:5

我的 .vimrc 中有一个条目,当我按空格键时,它会在视口中向下翻页。看起来像这样:

map <Space> <PageDown>

我想创建另一个键映射,在按住 Shift 并按空格键时将视口向上分页。我已经尝试过以下条目:

map <Shift><Space> <PageUp>
map <S-Space> <PageUp>

都不起作用。有人知道如何实现这个功能吗?

vim configuration-files
5个回答
41
投票

你不能。 CMS 的解决方案适用于 gVim,但不适用于 vim,因为终端无法区分 ,因为curses 认为它们是相同的。如果 vim 获得 libtermkey 支持并且您的终端支持正确的 序列(如果配置正确,xterm 会支持;其他的还没有),那么将来可能有可能。


20
投票

如果您在 iTerm2 中使用 vim,您可以通过发送十六进制键 15 将 shift-space 映射到 ctrl+U。这是屏幕截图:

enter image description here

要查找 ctrl+字母组合的十六进制代码,例如 ctrl+u,您可以执行以下操作:

  • 在vim中进入插入模式
  • 先按 ctrl+v,然后按 ctrl+u,然后按 ctrl+c,然后按 ga
  • 底部会打印各种数字表示

您可以将此想法应用于其他支持键映射的终端模拟器。


8
投票

使用这个:

map <Space> ^D   " Pagedown when press Space
map <S-Space> ^U " Page Up when press Shift Space

要正确获取 ^D 和 ^U 符号,只需按 Control-V Control-D 和 Control-V Control-U


3
投票

对于 OSX:

nnoremap <Space> <C-d>
nnoremap <S-Space> <C-u>

3
投票

受到这个答案的启发,我完成了映射:

  • 使用支持按键映射的终端
  • Shift+Space 映射到 Vim 可以与 Space 区分开的字符序列,但在输入文本时仍然具有写入空格的最终效果。

操作方法:

  1. 选择能够进行按键映射的终端之一。
    例如,Alacritty、xterm、urxvt 或 Kitty。

  2. 选择 Shift+Space 将映射到的字符序列。
    SOME_KEYBackspaceSpace 应该可以解决问题,其中 SOME_KEY:

    • 写入一个在输入文本时可以通过Backspace取消的字符,例如可打印字符或制表符。
    • 也是您在 Vim 正常模式和/或可视模式下很少使用的键(取决于您要在哪种模式下使用 Shift+Space)。如果已经绑定了一些频繁使用的命令,那么每次使用该命令时,您可能会遇到一些延迟(详细信息请参见
      :h timeout
      )。

    我使用 \ 作为 SOME_KEY` 也可能是一个不错的选择)。

  3. 终端中的映射
    我使用的是 Alacritty,所以这里是一个将 Shift+Space 映射到 Alacritty 中的字符序列的示例。在配置文件中的“key_bindings”项下添加以下行:

    - { key: Space, mods: Shift, chars: "\x5c\x08 " }

    要确认映射是否有效,请在终端中运行

    showkey -a
    并按 Shift+Space,然后应该输出字符序列。对于上面的例子,输出是:

     \^H      92 0134 0x5c  
               8 0010 0x08  
              32 0040 0x20
    
  4. Vim 中的映射
    将字符序列映射到 Vim 配置中的向上翻页。就我而言(使用 \ 作为第一个键),它将是

    no <Bslash><C-h><Space> <C-b>
    。如果您也需要视觉模式下的映射,请添加
    vno <Bslash><C-h><Space> <C-b>

我已经使用这个设置有一段时间了,它还没有破坏 Vim 以及大多数的插入模式和替换模式 在我的系统上接受文本输入的程序。但这不是解决方案,而是一种解决方法,它确实存在一些缺陷,例如:

  • 在 Vim 中,如果您尝试用 Shift+Space 替换光标下的字符(默认为 r),您将不会得到空格。
  • 一些将字符序列解释为命令的程序(如 Vim 所做的那样)可能会受到影响。
© www.soinside.com 2019 - 2024. All rights reserved.