我的.vimrc中有一个条目,当我点击空格键时它会在视口中向下翻页。它看起来像这样:
map <Space> <PageDown>
我想创建另一个键映射,当按住shift并按下空格键时,该映射会向上查看视口。我尝试了以下条目:
map <Shift><Space> <PageUp>
map <S-Space> <PageUp>
都没有工作。有谁知道如何实现这个功能?
答案 0 :(得分:32)
你做不到。 CMS的解决方案适用于gVim,但不适用于vim,因为终端无法区分&lt; Space&gt;和&lt; S-Space&gt;因为curses看到它们是一样的。如果vim获得libtermkey支持并且您的终端支持正确的&lt; CSI&gt;,那么将来可能是可能的。序列(如果配置正确,xterm会执行;还没有其他任何内容)。
答案 1 :(得分:12)
如果您在iTerm2中使用vim,您可以通过发送十六进制键15将shift-space映射到ctrl + U.这是一个屏幕截图:
要查找ctrl +字母组合的十六进制代码,例如ctrl + u,您可以执行以下操作:
您可以将此想法应用于支持键映射的其他终端模拟器。
答案 2 :(得分:6)
使用此:
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 :(得分:3)
对于OSX:
nnoremap <Space> <C-d>
nnoremap <S-Space> <C-u>
答案 4 :(得分:0)
受this answer的启发,我完成了映射:
选择那些能够进行按键映射的终端之一。
例如,Alacritty,xterm,urxvt或Kitty。
选择要映射 Shift + 空格的字符序列。
SOME_KEY , Backspace , Space 应该可以解决问题,其中 SOME_KEY :
:h timeout
)。我将 \ 用作 SOME_KEY (`可能也是一个不错的选择)。
在终端中映射
我正在使用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
在Vim中映射
映射字符序列以在Vim配置中向上翻页。就我而言(使用 \ 作为第一个键),它将为no <Bslash><C-h><Space> <C-b>
。如果您还需要在可视模式下进行映射,请添加vno <Bslash><C-h><Space> <C-b>
。
我已经使用了一段时间了,它还没有破坏Vim的插入模式和替换模式,以及大多数 在我的系统上接受文本输入的程序。但这不是解决方案,而是解决方法,确实存在一些缺陷,例如: