【问题标题】:How remap default key in VIM, without affecting the other remap?如何在 VIM 中重新映射默认键,而不影响其他重新映射?
【发布时间】:2014-03-05 15:35:58
【问题描述】:

所以,我的 .vimrc 中有以下键盘映射

noremap <C-o> :browse confirm e<CR>
vnoremap <C-o> :browse confirm e<CR>
inoremap <C-o> :browse confirm e<CR>

这是用于 GVIM 的 GUI。然后我会得到一个带有文件夹的弹出窗口。在这里我可以选择文件。

但这会禁用 Control-o 文件跳转(当您按下 Ctrl-o 时)。我不希望这样,但我想为 GUI 文件夹视图保留 Ctrl-o 映射。我仍然想使用文件夹跳转。

所以,我想我可以将跳转一个文件从 Control-o C-o 映射回 Alt-o。所以地图看起来像 noremap :jump 1g back in history 之类的。

我尝试了所有方法,看看当您按下 Control-o 键以跳回文件历史记录时,默认命令是什么。不知道你怎么看 标准 Control-o 的默认命令。

:verbose 映射仅适用于重新映射的键。

有人建议为默认的 Control-o 键找到正确的命令吗?

【问题讨论】:

  • 你应该尽量坚持 Vim 的默认设置。如果您想要一个可供选择的交互式文件列表,请使用:Ex。此外,在正常模式之外导航文件系统并没有多大意义。同样,&lt;C-o&gt; 根本不会将您跳回到文件历史记录中,它会跳回到跳转列表中根本不是一回事 .如果您不想适应 Vim 的模式并学习如何使用它的默认功能,还有许多其他可用的编辑器。

标签: vim vi


【解决方案1】:

其他一些程序有“键绑定”的概念,其中有一个可用的内部命令列表,然后分配各种键来触发这些命令。 Vim 不是这样工作的。 CTRL-O 没有触发 spoon 内部命令。你可以做的是将ALT-o映射到CTRL-O

我不确定&lt;M-o&gt; 在我的系统上是否适用于ALT-o,但为了便于讨论,我们假设它适用于您的系统。如果你要定义

:nnoremap <C-o> :browse confirm e<CR>
:nmap <M-o> <C-O>

那么ALT-o 将具有与:browse confirm e&lt;CR&gt; 相同的效果。但是您已经在使用“nore”变体,所以您更有可能做的是

:nnoremap <C-o> :browse confirm e<CR>
:nnoremap <M-o> <C-O>

这将使ALT-o 的行为类似于未映射的CTRL-O

除非您有一个影响browse confirm e&lt;CR&gt;:cmap,或者您是重新映射: 的人之一,那么您在上面的第一行中使用:nmap 还是:nnoremap 都没有关系。

:help :noremap

【讨论】:

  • 你的回答做到了!现在可以了。非常感谢您的正确回复! :)
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多