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

重置所有vim快捷方式,并仅重新定义其中一些快捷方式,vim,Vim,我想学习使用vim。事情很简单:我不知道它的任何捷径。所以我不想费心去学习它们,我想为每个命令定义我自己的 有没有办法禁用所有命令,只启用我设置的命令 如何重新定义最基本的命令?像插入、向上移动、向左移动、退出插入模式?我找到了很多关于特定命令的教程,但没有一本是关于最基本的命令的 谢谢 编辑:请。。。我能得到一个真实的答案,而不是“你确定吗?” 编辑2:主要原因是我使用的是dvorak键盘,所以它不像快捷键映射到我看到的字母。。。这使它变得困难:p。第二,我想变得超高效。。。就像将上、下、左、

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

  • 有没有办法禁用所有命令,只启用我设置的命令
  • 如何重新定义最基本的命令?像插入、向上移动、向左移动、退出插入模式?我找到了很多关于特定命令的教程,但没有一本是关于最基本的命令的
  • 谢谢

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


    编辑2:主要原因是我使用的是dvorak键盘,所以它不像快捷键映射到我看到的字母。。。这使它变得困难:p。第二,我想变得超高效。。。就像将上、下、左、右键映射到“j、k、l、;”一样,它使我能够编辑文件,而无需移动双手。最后,我讨厌键入错误的键,我不知道vim(或任何其他工具)做了什么,因为它是一个快捷方式/命令,但我不知道它做了什么,因为我还不知道。既然你能自己做,而且能更好地记住,为什么还要学捷径呢。。。我是法国人,所以有些字母在我的脑海中不会像英语使用者那样映射。

    我强烈建议不要尝试重新定义命令。如果您发现不存在您想要执行的操作,那么最好学习提供的命令,并添加自定义命令


    如果您不喜欢这些命令,为什么不尝试其他编辑器?

    我强烈建议不要尝试重新定义这些命令。如果您发现不存在您想要执行的操作,那么最好学习提供的命令,并添加自定义命令


    如果您不喜欢这些命令,为什么不尝试其他编辑器呢?

    wikia上的vim wiki上有一个用于的条目,超级用户上有一个线程

    这两种观点(维基条目上的评论和SU对话上的评论/答案)似乎都表明德沃夏克和维姆的关系不是很好,我倾向于同意


    但是,除了hjkl之外,大多数命令从助记的角度来看还是有意义的,不是吗?既然使用Dvorak的唯一真正原因是提高你的速度,为什么你要物理地查看按键来确定要点击什么?

    wiki上有一个关于的vim wiki条目,超级用户上有一个线程

    这两种观点(维基条目上的评论和SU对话上的评论/答案)似乎都表明德沃夏克和维姆的关系不是很好,我倾向于同意


    但是,除了hjkl之外,大多数命令从助记的角度来看还是有意义的,不是吗?既然使用Dvorak的唯一真正原因是提高您的速度,为什么您要仔细查看按键以确定要点击的内容?

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

    函数s:hsescape(str)
    例如:(a:str,
    \",","g",,
    \|","g",,
    \“\n”、“g”),
    
    \“\c^只能清除使用
    *map
    定义的快捷方式,内置命令是可重写的,但不能清除。如果需要禁用特定命令,则必须执行
    noremap
    ,以下代码应将其全部禁用(但请注意,它是重写的,而不是删除任何内容):

    函数s:hsescape(str)
    例如:(a:str,
    \",","g",,
    \|","g",,
    \“\n”、“g”),
    
    \“\c^我参考了ZyX的答案,创建了一个vimrc设置以进行覆盖,并尝试记录该过程和函数。希望对其他人有所帮助:


    我参考了ZyX的答案,创建了一个vimrc设置以进行覆盖,并尝试记录过程和功能。希望对其他人有所帮助:


    主要原因是我使用的是dvorak键盘,所以快捷键并不是映射到我看到的字母上……这使得它变得很困难:p。其次,我希望非常高效……比如将上下左右键映射到“j,k,l,;”,它可以让我编辑一个文件而不用移动我的手。它应该已经映射到hjkl了…但是我把我的映射到了uhjk,所以它就像箭头键,撤销是l.:DWow,别担心,我从来都不知道Dvorak键盘的布局!如果你想让它位于相同或相似的位置,你肯定需要重新映射一些东西,但是你可能不记得肺炎(例如,dw'd'eletes a'w'ord,y代表y'ank,cw代表c'hange'w'ord,等等)。我不打算对此投反对票,但我强烈不同意这个答案。有很多原因,人们希望定义自己的映射。Vim的想法是将所有内容的键映射预定义到荒谬的长度。没有人能够或应该记住它们。另一种方法是为不太常见的操作定义函数操作并让用户选择他们自己的映射。主要原因是我使用的是dvorak键盘,所以它不像快捷键映射到我看到的字母…这使得它很难:第二,我想要超级高效…就像映射一样
    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