vim映射vimrc和插件之间的冲突

时间:2015-11-17 07:01:29

标签: vim jedi-vim

我正在使用jedi-vim。它将键映射<Leader>n定义为一些命令,而我也在.vimrc文件中定义它,如下所示。

nnoremap <Leader>n <C-w><C-w>

但是当我在python文件中输入<Leader>n时,执行了jedi#usages()命令。

:map <Leader>n返回:

n  <Space>n    *@:call jedi#usages()<CR>
n  <Space>n    * <C-W><C-W>

在定义地图之前,我还尝试取消映射<Leader>n。但是,它引发了一个错误,说没有定义。

如何避免这种冲突?

我知道当我将g:jedi#usages_command定义为另一个命令时,问题将得到解决。我想知道避免重叠映射的方法。

1 个答案:

答案 0 :(得分:4)

  

我知道当我将mVisibilityCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // this doesn't work Toast.makeText(SettingsActivity.this, "isChecked - " + mVisibilityCheckBox.isChecked(), Toast.LENGTH_SHORT).show(); } } }); 定义为另一个命令时,问题将得到解决。我想知道避免重叠映射的方法。

定义g:jedi#usages_command “避免重叠映射的方法”。

插件映射总是优先于你的映射,因为它们在定义你的映射后定义了它们的映射

脚本级别有解决方案,比如使用g:jedi#usages_command,或者检查映射是否已经存在,或者只是没有定义任何用户级映射......但这是开发人员的责任,而不是你的责任。

---编辑---

为了扩展Christian的评论...最后的映射总是获胜,这就是它的工作方式,用户无法保护他的映射。

但是,插件开发人员可以使用一些机制来阻止他们的插件覆盖用户映射和用户设置,因此期望他们使用这些机制来尊重映射并不是没有道理的。