如何更改vim命令执行优先级?

如何更改vim命令执行优先级?,vim,vim-plugin,neovim,Vim,Vim Plugin,Neovim,我制作了:wincmd h到h的快捷方式,mapleader对我来说是 但是当我执行h时,我感觉执行此操作有相当长的延迟 因此,我通过:map h搜索了关于h的命令 我发现我有几个以h开头的命令,如下所示 n <Space>hp @<Plug>(GitGutterPreviewHunk) n <Space>hu @<Plug>(GitGutterUndoHunk) n <Space>hs @<Plug>

我制作了
:wincmd h
h
的快捷方式,mapleader对我来说是

但是当我执行
h
时,我感觉执行此操作有相当长的延迟

因此,我通过
:map h
搜索了关于
h
的命令

我发现我有几个以
h
开头的命令,如下所示

n  <Space>hp    @<Plug>(GitGutterPreviewHunk)
n  <Space>hu    @<Plug>(GitGutterUndoHunk)
n  <Space>hs    @<Plug>(GitGutterStageHunk)
x  <Space>hs    @<Plug>(GitGutterStageHunk)
n  <Space>h    * :wincmd h<CR>

==编辑结果(正在工作)=== 对于
:地图h
现在显示如下图片

我所做的

  • 从答案中添加4个片段
  • :PlugUpdate
    =>我已经过时了
  • 删除
  • :echo hasmapto('(GitGutterStageHunk)'n')
    输出
    1
  • 当达到2步时,它不工作,但在删除
    nowait
    后它工作
    一些干扰命令的东西,但我不知道确切的原因。

    h
    作为前缀的映射将导致这种干扰。Vim将在执行
    h
    映射之前等待超时或额外的按键,因为它想检查您是否打算按下较长的映射之一

    解决此问题的最简单方法是为vim gitgoolt命令设置备用映射。如果为vimrc中的映射设置了不同的映射,vim GitGotter本身将不会创建导致干扰的映射

    建议使用
    g
    作为以下内容的备选前缀:

    要为这些设置自己的映射,例如,如果您更喜欢基于
    g
    的映射,请执行以下操作:

    nmap ghs <Plug>(GitGutterStageHunk)
    nmap ghu <Plug>(GitGutterUndoHunk)
    
    nmap ghs(GitGutterStageHunk)
    nmap ghu(GitGutterUndoHunk)
    
    因此,只需继续为破坏
    h
    的四个键绑定创建映射。将以下四行添加到vimrc:

    nmap ghs <Plug>(GitGutterStageHunk)
    xmap ghs <Plug>(GitGutterStageHunk)
    nmap ghu <Plug>(GitGutterUndoHunk)
    nmap ghp <Plug>(GitGutterPreviewHunk)
    
    nmap ghs(GitGutterStageHunk)
    xmap ghs(GitGutterStageHunk)
    nmap ghu(GitGutterUndoHunk)
    nmap ghp(GitGutterPreviewHunk)
    
    技术上不需要
    xmap
    (用于在可视模式下登台),您可以继续在那里使用
    hs
    ,而不受干扰。。。但另一方面,您可能希望在正常模式和视觉模式之间保持一致,因此我建议也重新映射该模式


    无法解决此问题的原因是
    仅对
    局部映射起作用,而它们对全局映射起阴影作用。当所有映射都是全局映射时,它不起作用。(在这种情况下,Vim更愿意强制您解决冲突,而不是使最长映射始终不可访问。)

    h
    作为前缀的映射将导致这种干扰。Vim将在执行
    h
    映射之前等待超时或额外的按键,因为它想检查您是否打算按下较长的映射之一

    解决此问题的最简单方法是为vim gitgoolt命令设置备用映射。如果为vimrc中的映射设置了不同的映射,vim GitGotter本身将不会创建导致干扰的映射

    建议使用
    g
    作为以下内容的备选前缀:

    要为这些设置自己的映射,例如,如果您更喜欢基于
    g
    的映射,请执行以下操作:

    nmap ghs <Plug>(GitGutterStageHunk)
    nmap ghu <Plug>(GitGutterUndoHunk)
    
    nmap ghs(GitGutterStageHunk)
    nmap ghu(GitGutterUndoHunk)
    
    因此,只需继续为破坏
    h
    的四个键绑定创建映射。将以下四行添加到vimrc:

    nmap ghs <Plug>(GitGutterStageHunk)
    xmap ghs <Plug>(GitGutterStageHunk)
    nmap ghu <Plug>(GitGutterUndoHunk)
    nmap ghp <Plug>(GitGutterPreviewHunk)
    
    nmap ghs(GitGutterStageHunk)
    xmap ghs(GitGutterStageHunk)
    nmap ghu(GitGutterUndoHunk)
    nmap ghp(GitGutterPreviewHunk)
    
    技术上不需要
    xmap
    (用于在可视模式下登台),您可以继续在那里使用
    hs
    ,而不受干扰。。。但另一方面,您可能希望在正常模式和视觉模式之间保持一致,因此我建议也重新映射该模式


    无法解决此问题的原因是
    仅对
    局部映射起作用,而它们对全局映射起阴影作用。当所有映射都是全局映射时,它不起作用。(在这种情况下,Vim更愿意强迫您解决冲突,而不是使最长映射始终不可访问。)

    考虑使用堆栈来解决Vim上的问题@FiBrand感谢你的建议,下次我会在VI堆栈上做这个。filbranden感谢您的建议,我下次将在Vi堆栈上执行此操作。感谢您的回答,但它不起作用,我将您的代码片段的4行添加到我的init.vim中,但它仍然等待下一个字符。您可以在我的问题中看到我的init.vim。是否尝试
    :PlugUpdate
    ?在2019年9月之前,
    映射有不同的名称。。。另外,请尝试删除
    部分,可能是它造成了干扰。如果仍然不起作用,请运行
    :echo hasmapto('(GitGutterStageHunk)'n')
    ,它会告诉您Vim是否认为映射存在,就像Vim Gitgoolt检查它一样…谢谢您,现在它工作了,我更新了我问题中的结果,
    echo hasmapto
    导致
    1
    那么这样可以吗?我不知道确切的原因是什么,但从现在起它起作用了非常感谢,你救了我的手指我有一件奇怪的事,之前的at标志是什么,wincmd?若你们知道这一点,我真的很感激你们告诉我答案,但它并没有起作用,我在init.vim中添加了4行代码片段,但它仍在等待下一个字符。您可以在我的问题中看到我的init.vim。是否尝试
    :PlugUpdate
    ?在2019年9月之前,
    映射有不同的名称。。。另外,请尝试删除
    部分,可能是它造成了干扰。如果仍然不起作用,请运行
    :echo hasmapto('(GitGutterStageHunk)'n')
    ,它会告诉您Vim是否认为映射存在,就像Vim Gitgoolt检查它一样…谢谢您,现在它工作了,我更新了我问题中的结果,
    echo hasmapto
    导致
    1