如何将Ctrl + 分号映射为在行末添加分号?

16
我想将在插入模式下按 [ctrl] + [semicolon] 映射到移动到行尾并添加分号。在安装 surround 插件后,我发现自己经常这样做。
我尝试运行以下命令:
inoremap <c-;> <esc>A;<esc>

但是当我尝试时,它会将我退出插入模式,并进入命令模式。使用另一个修饰符 d 也得到了相同的结果。
分号不能与修饰符映射吗? 我做错了什么?
2个回答

10

抱歉我没有认真阅读你的问题,只看到你的映射使你退出了插入模式和最后的<esc>...是我的错误。

您想映射ctrl+;,但vim无法捕获该键码。有些键组合在vim中不能被映射,例如;ctrl+=

因此,您可能需要选择另一个映射。

顺便说一下,在插入模式下,您可以尝试按ctrl-v然后按键组合,以查看是否可以使用。


得到了相同的结果 :/ - fent
2
@DeaDEnD 另外,FYI:http://vim.1045645.n5.nabble.com/Mapping-ctrl-ctrl-semicolon-td1193549.html - Kent
啊,我明白了。谢谢。我会尝试使用keyremap4macbook做些什么。 - fent

5

根据您的终端类型,可以设置映射。例如,如果您使用的是urxvt,则在~/.Xresources中添加:

URxvt.keysym.C-semicolon:   \033[;

~/.vimrc文件中添加以下内容:

map  <Esc>[; <C-Semicolon>map! <Esc>[; <C-Semicolon>

那么,您应该能够像这样映射它(未经测试):
inoremap <c-Semicolon> <Esc>A;<Esc>

我用以下代码将分割窗口的移动映射为如下(这对我有效):

noremap <C-Semicolon> <C-w>l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接