代码之家  ›  专栏  ›  技术社区  ›  jerodsanto

如何在Vim中设置shift+空格键页面?

  •  39
  • jerodsanto  · 技术社区  · 17 年前

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

    map <Space> <PageDown>
    

    我想创建另一个关键点贴图,当按住shift键并点击空格键时,它会向上翻页视口。我尝试了以下条目:

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

    4 回复  |  直到 17 年前
        1
  •  38
  •   Zathrus    17 年前

    你不能。CMS的解决方案适用于gVim,但不适用于vim,因为终端无法区分<空间>及<S-空间>因为诅咒者也看到了他们。如果vim获得libtermkey支持并且您的终端支持正确的<CSI>序列(如果正确配置,xterm会执行;其他操作都不会执行)。

        2
  •  16
  •   Bijou Trouvaille    12 年前

    如果您在iTerm2中使用vim,则可以通过发送十六进制键15将移位空间映射到ctrl+U。下面是一个屏幕截图:

    enter image description here

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

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

        3
  •  7
  •   Christian C. Salvadó    17 年前

    使用以下命令:

    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

        4
  •  3
  •   Steve McKinney    14 年前

    nnoremap <Space> <C-d>
    nnoremap <S-Space> <C-u>
    
        5
  •  0
  •   ebk    6 年前

    灵感来自 this answer ,我通过以下方式完成映射:

    • 映射 转移 + 空间 空间 通过Vim,但仍然具有在输入文本时写入空格的净效果。

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

    2. 转移 空间 将被映射。
      一些钥匙 , , 空间 一些钥匙

      • 写入一个可以由 输入文本时,例如可打印字符或选项卡。
      • 也是在Vim正常模式和/或视觉模式(取决于您想要使用的模式)中很少使用的键 空间 :h timeout 有关详细信息,请参见)每次使用该命令时。

      一些钥匙 ( `

    3. 终端中的映射
      我正在使用 Alacritty 转移 + 快速地调整角色序列。在配置文件中,在“密钥绑定”项下添加以下行: - { key: Space, mods: Shift, chars: "\x5c\x08 " } .

      要确认映射工作正常,请运行 showkey -a 在终端中,按 转移 + 空间

       \^H      92 0134 0x5c  
                 8 0010 0x08  
                32 0040 0x20
      

    4. \ 作为第一个键),它将 no <Bslash><C-h><Space> <C-b> . 如果您也需要在可视模式下进行映射,还可以添加 vno <Bslash><C-h><Space> <C-b> .

    在我的系统上接受文本输入的程序。但这不是一种解决方案,而是一种变通方法,确实存在一些缺陷,例如:

    • 在Vim中,如果尝试替换光标下的字符(通过 R 默认情况下)使用 转移 + ,您将无法获得空间。
    • 一些将字符序列解释为命令的程序(如Vim所做的)可能会受到影响。