1

在 Emacs 中,按照惯例,以 开头的键序列C-c保留给个人用户设置。我认为至少还有一个约定。

Vim 的自定义键绑定约定(如果有的话)是什么?

4

3 回答 3

3

您可以使用以您的<leader>键为前缀的命令作为约定,将您自己的单个键映射与默认键区分开。

<leader>在你的 .vimrc 文件中设置你的密钥:

let mapleader = "_"

然后,您可以创建以您将领导者设置为前缀的键映射,如下所示:

nnoremap <leader><space> :noh<cr> 

有关更多信息,请参见此处

于 2012-08-02T23:12:21.403 回答
1

在 Emacs 中,我不会说它是一种惯例,而是一种流行的选择。

在 Vim 中甚至没有,虽然 Ctrl+something 或 F 键很流行,但它远不是一个广泛传播的“约定”。

很多 Vim 用户只是在普通模式下使用默认的“字母操作”,他们在文本编辑中完成,这是大多数 Emacs 用户必须依赖的功能。

于 2012-08-02T23:48:51.483 回答
1

有一个反斜杠默认什么都不做,只是映射领导者(mapleader 和 maplocalleader)的默认值。这个领导者用于插件,我强烈建议只为他们保留它,使用附加了默认操作的键,但这并没有多大用处。常用键有,(重复 t/T/f/F 向相反方向运动)和_(向下移动一行,在第一个非空白字符上),您还可以检查哪些不使用(例如 I , 不要使用+and -, 后者是 ) 的好替代品_。我与@stonesam92 不同的原因建议不要将 mapleader 设置为它们,而是将您自己的 leader 直接放入映射中,原因如下:

  1. 它使插件可能添加与您自己的映射冲突的映射。
  2. 你习惯于打字,a_a或其他什么,而不是<Leader>a
  3. 它使映射命令根据它们在 vimrc 中的位置以不同的方式工作(<Leader>仅计算一次,如果您之后更改 mapleader,则已定义的映射不会更改)。
  4. 它混淆了阅读:你必须永远记住,什么<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
于 2012-08-03T13:11:44.377 回答