我想在我的.vimrc
中实现以下功能:
map <C-k> :e#<CR>
然而,最近我发现<C-k>
被用于双字母符号。
我如何在vim中获取未映射的控制键列表?
我想在我的.vimrc
中实现以下功能:
map <C-k> :e#<CR>
然而,最近我发现<C-k>
被用于双字母符号。
我如何在vim中获取未映射的控制键列表?
Vim有很多命令,因此找到一个(易记且简短的)键序列进行映射可能是一项挑战。
我的方法是对我不经常使用的东西使用推荐的<Leader>
前缀,而对于必要的东西,使用带有 Ctrl 的映射确实很有用。
学习如何在帮助中表示命令(例如正常模式下的CTRL-O
,插入模式下的i_CTRL-X_CTRL-N
),想出一个好的映射候选,然后尝试通过:help CTRL-...
查找它。如果没有匹配项,您可以通过:nmap C-...
确保映射是空闲的;如果有匹配项(好处是这也包括提供文档的插件),您可以阅读描述,至少发现了一个新的Vim命令,然后可以决定是否需要它(然后使用不同的映射候选重试)或者是否覆盖该命令。
(请注意,您还可以将内置命令:noremap
到其他键,但请注意,这使您在纯Vim安装或其他应用程序的vi仿真模式中变得越来越无助。)
我刚才查看了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
这个已经有一个快捷键了:<C-^>
(或在某些情况下是<C-6>
)。
<leader>...
序列和功能键上。 - Amadan:#e<CR>
非常常见,所以我想将其绑定到一个直接控制键上。看来我需要找一个我不用的键了... - kfmfe04<F2>
键来打开 NERDTree。很方便,而且免费。将常用的功能放在功能键上,因为它们没有被占用。 - Amadan:map
命令定义映射的模式中,<C-k>
都不用于二合字,它只用于插入和命令模式下的二合字。实际上,在包括所有由:map
处理的模式在内的任何其他模式中,它都没有用途。你需要使用:nnoremap
。 - ZyX