如何在vim中查找未映射的控制键?

9

我想在我的.vimrc中实现以下功能:

map <C-k> :e#<CR>

然而,最近我发现<C-k>被用于双字母符号。

我如何在vim中获取未映射的控制键列表?


1
我不确定是否有,通常我将其映射到我的扩展程序的 <leader>... 序列和功能键上。 - Amadan
+1 @Amadan - 哈哈,出乎意料的答案。我确实使用<leader>来执行某些序列(例如NERDtree),但是:#e<CR>非常常见,所以我想将其绑定到一个直接控制键上。看来我需要找一个我不用的键了... - kfmfe04
我使用 <F2> 键来打开 NERDTree。很方便,而且免费。将常用的功能放在功能键上,因为它们没有被占用。 - Amadan
这正是它们的用途。 - romainl
在任何由:map命令定义映射的模式中,<C-k>都不用于二合字,它只用于插入和命令模式下的二合字。实际上,在包括所有由:map处理的模式在内的任何其他模式中,它都没有用途。你需要使用:nnoremap - ZyX
3个回答

3

Vim有很多命令,因此找到一个(易记且简短的)键序列进行映射可能是一项挑战。

我的方法是对我不经常使用的东西使用推荐的<Leader>前缀,而对于必要的东西,使用带有 Ctrl 的映射确实很有用。

学习如何在帮助中表示命令(例如正常模式下的CTRL-O,插入模式下的i_CTRL-X_CTRL-N),想出一个好的映射候选,然后尝试通过:help CTRL-...查找它。如果没有匹配项,您可以通过:nmap C-...确保映射是空闲的;如果有匹配项(好处是这也包括提供文档的插件),您可以阅读描述,至少发现了一个新的Vim命令,然后可以决定是否需要它(然后使用不同的映射候选重试)或者是否覆盖该命令。

(请注意,您还可以将内置命令:noremap到其他键,但请注意,这使您在纯Vim安装或其他应用程序的vi仿真模式中变得越来越无助。)


2

我刚才查看了vim 7.4 debian/ubuntu软件包的文档目录,以查找使用的控制键。

我使用的命令是:

ack ctrl- | perl -ne 'm/(CTRL-.?)/g; print $1."\n";' | sort| uniq

输出结果如下:
CTRL-^
CTRL-<
CTRL-_
CTRL--
CTRL-;
CTRL-?
CTRL-(
CTRL-[
CTRL-]
CTRL-{
CTRL-@
CTRL-\
CTRL-6
CTRL-a
CTRL-A
CTRL-B
CTRL-C
CTRL-D
CTRL-E
CTRL-F
CTRL-G
CTRL-H
CTRL-I
CTRL-J
CTRL-K
CTRL-L
CTRL-M
CTRL-N
CTRL-O
CTRL-P
CTRL-Q
CTRL-R
CTRL-s
CTRL-S
CTRL-T
CTRL-U
CTRL-V
CTRL-W
CTRL-x
CTRL-X
CTRL-Y
CTRL-Z

基本上没有免费的 Ctrl 键……耶! :)

1

这个已经有一个快捷键了:<C-^>(或在某些情况下是<C-6>)。


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