重置所有vim快捷方式并重新定义其中一些

时间:2011-04-15 15:26:34

标签: vim

我想学习使用vim。事情很简单:我不知道它的任何快捷方式。所以我不想费心学习它们,我想为每个命令定义我自己的命令!

  1. 有没有办法禁用所有命令,只启用我设置的那些命令?
  2. 如何重新定义最基本的命令?像插入,向上移动,向左移动,退出插入模式......?我发现了很多关于特定命令的教程,但没有关于最基本命令的教程。
  3. 由于

    修改:请...我能得到一个真实的答案,而不是“你确定吗?”

    编辑2 :主要原因是我使用的是 dvorak键盘,所以它不像是将短信映射到字母I看...这很难:p。第二,我希望超高效 ......就像将上,下,左,右键映射到“j,k,l,;”一样,它可以让我编辑一个文件动我的手。最后,当我输入错误的密钥我讨厌,我不知道vim(或任何其他工具)做了什么,因为它是一个快捷方式/命令,但我不知道它做了什么,因为我还不知道。为什么学习快捷方式,当你可以创造自己的,你可以更好地记住...我是法国人所以有些字母不会映射到我的脑海里,就像英语使用者一样。

4 个答案:

答案 0 :(得分:4)

在wikia上有Using Vim with the Dvorak keyboard layout的vim wiki上有一个条目,并且SuperUser上有一个帖子discusses whether or not it's worth trying to use Dvorak with vim

两者中的情绪(对wiki条目的评论和SU对话的评论/答案)似乎表明Dvorak和vim并没有真正融合在一起,我倾向于同意。

然而,除了hjkl之外,从助记符的角度看,大多数命令仍然有意义,不是吗?因为使用Dvorak的唯一真正原因是为了提高你的速度,为什么你会在物理上查看按键以确定要击中什么?

答案 1 :(得分:3)

我强烈建议不要重新定义命令。学习所提供的命令会更好,如果你发现了一些不存在的东西,你可以添加自定义命令。

如果你不喜欢这些命令,为什么不尝试不同的编辑器?

答案 2 :(得分:2)

可以仅清除使用*map定义的快捷方式,内置命令可以覆盖,但不可清除。如果您需要禁用特定命令,则必须执行noremap <Key> <Nop>,以下代码应该全部禁用它们(但请注意它是覆盖,而不是删除任何内容):

function s:hsescape(str)
    return substitute(substitute(substitute(substitute(a:str,
                \      ' ', '<Space>',         'g'),
                \      '|', '<Bar>',           'g'),
                \     "\n", '<CR>',            'g'),
                \'\c^<\%(buffer\|silent\|expr\|special\)\@=', '<LT>', '')
endfunction
for s:mode in ['n', 'x', 'o']
    for s:char in map(range(0, 0x7F), 'nr2char(v:val)')
        execute s:mode.'noremap '.s:hsescape(s:char).' <Nop>'
    endfor
endfor
for s:mode in ['s', 'i', 'c']
    for s:char in map(range(0, 0x3F), 'nr2char(v:val)')
        execute s:mode.'noremap '.s:hsescape(s:char).' <Nop>'
    endfor
endfor

请注意,紧接着应该定义一些映射的代码(或删除一些<Nop>个映射)或者你将使vim变得无用。

答案 3 :(得分:0)

我从ZyX的答案中获取了引用,并创建了一个用于覆盖的vimrc设置 - 并尝试记录过程和函数。希望它对其他人有帮助:

https://github.com/hiway/po