Vim自定义键绑定约定?

时间:2012-08-02 21:47:17

标签: vim

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

Vim的自定义键绑定约定是什么?

3 个答案:

答案 0 :(得分:3)

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

在.vimrc文件中设置<leader>键如下:

let mapleader = "_"

然后你可以创建以你设置的领导者为前缀的关键映射:

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

有关详细信息,请参阅here

答案 1 :(得分:1)

在Emacs中,我不会说它是一个如此多的会议,而不是一个受欢迎的选择。

在Vim中甚至没有,虽然Ctrl +某些东西或F键很受欢迎,但它并不是一个广泛传播的“惯例”。

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

答案 2 :(得分:1)

默认情况下,反斜杠不执行任何操作,只是映射引导程序的默认值(mapleader和maplocalleader)。这个领导者在插件中使用,我强烈建议只使用附加默认操作的键,但它没有多大帮助。常用键是,(在相反方向上重复t / T / f / F运动)和_(向下移动一行,在第一个非空白字符上),您还可以检查哪些你不使用(我,例如,不要使用+-,后者是_的良好替代品。我不喜欢@ stonesam92的原因是建议不要将mapleader设置为它们,而是将你自己的领导者直接放在你的映射中如下:

  1. 它使插件可能添加与您自己的映射冲突的映射。
  2. 您习惯于输入,a_a或其他任何内容,而不是<Leader>a
  3. 它使映射命令的工作方式有所不同,具体取决于它们在vimrc中的位置(<Leader>只计算一次,如果你之后更改了mapleader,那么已经定义的映射不会改变)。
  4. 它模糊了阅读:你必须永远记住,<Leader>是什么。
  5. 如果您正在编写插件,请始终使用<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