在 Emacs 中,按照惯例,以 开头的键序列C-c
保留给个人用户设置。我认为至少还有一个约定。
Vim 的自定义键绑定约定(如果有的话)是什么?
您可以使用以您的<leader>
键为前缀的命令作为约定,将您自己的单个键映射与默认键区分开。
<leader>
在你的 .vimrc 文件中设置你的密钥:
let mapleader = "_"
然后,您可以创建以您将领导者设置为前缀的键映射,如下所示:
nnoremap <leader><space> :noh<cr>
有关更多信息,请参见此处
在 Emacs 中,我不会说它是一种惯例,而是一种流行的选择。
在 Vim 中甚至没有,虽然 Ctrl+something 或 F 键很流行,但它远不是一个广泛传播的“约定”。
很多 Vim 用户只是在普通模式下使用默认的“字母操作”,他们在文本编辑中完成,这是大多数 Emacs 用户必须依赖的功能。
有一个反斜杠默认什么都不做,只是映射领导者(mapleader 和 maplocalleader)的默认值。这个领导者用于插件,我强烈建议只为他们保留它,使用附加了默认操作的键,但这并没有多大用处。常用键有,
(重复 t/T/f/F 向相反方向运动)和_
(向下移动一行,在第一个非空白字符上),您还可以检查哪些不使用(例如 I , 不要使用+
and -
, 后者是 ) 的好替代品_
。我与@stonesam92 不同的原因建议不要将 mapleader 设置为它们,而是将您自己的 leader 直接放入映射中,原因如下:
,a
,_a
或其他什么,而不是<Leader>a
。<Leader>
仅计算一次,如果您之后更改 mapleader,则已定义的映射不会更改)。<Leader>
是。如果您正在编写插件,请始终使用<Leader>
并让用户更好地自定义它们,两种常见的解决方案是使用全局选项和使用hasmapto
:
" Global option
if !exists('g:plugin_mapping_key')
let g:plugin_mapping_key='<Leader>a'
endif
execute 'nnoremap '.g:plugin_mapping_key.' :DoSomething<CR>'
" hasmapto
nnoremap <Plug>PluginDoSomething :DoSomething<CR>
if !hasmapto('<Plug>PluginDoSomething', 'n', 0)
nmap <Leader>a <Plug>PluginDoSomething
endif