如何更改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
现在显示如下图片
我所做的
:PlugUpdate
=>我已经过时了
:echo hasmapto('(GitGutterStageHunk)'n')
输出1
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