如何“重写”现有的vim键绑定?

帖木尔·费兹拉赫玛诺夫

我想分配CTRL+L转到下一个标签(:tabnext)。我把它放在~/.vimrc

nmap <c-l> :tabnext<CR>

它工作正常,但是当我在多个窗口上拆分屏幕时,我遇到了无法正常工作的情况。似乎CTRL+L与默认分配的“重绘屏幕”操作冲突。例如,当我在中心窗口上CTRL+L时,什么也没得到(请参见屏幕截图):

在此处输入图片说明

但是,当我在左侧或右侧窗口上按相同的按钮时,它可以正常工作。我想我需要“重写”默认操作,不是吗?

我从终端使用vim。

阿玛丹

如果没有记错的话,中间的窗口是netrw(Vim的文件管理标准插件)。它不是自定义插件,但仍然是插件。

如果看一下:help netrw-ctrl-l,您会发现它不仅是重绘,而且还会刷新目录。因此,它是从插件映射的,仅覆盖netrw Windows的默认ctrl-l映射。

如果:verbose nmap <c-l>在该窗口中执行,将autoload/netrw.vim在Vim安装文件中看到定义的确切位置看那里,我们发现以下代码片段:

if !hasmapto('<Plug>NetrwRefresh')
 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
 imap <buffer> <unique> <c-l> <Plug>NetrwRefresh
endif

也就是说,如果<Plug>NetrwRefresh未绑定任何东西,则绑定<c-l>这提供了一个简单的解决方案:因为netrw.vim就像其他所有东西一样,加载之后.vimrc,如果您将这些映射定义为其他键,则不会将它们分配给<c-l>,并且您的映射也不会被覆盖。所以只需在您的.vimrc

 nmap <unique> <c-r> <Plug>NetrwRefresh

但是,更好的方法是不要踩Vim的脚趾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在vim中编辑现有的键映射?

来自分类Dev

为不同的组合键重用现有的标准绑定

来自分类Dev

如何在现有的第三方扩展中重写/扩展Magento类

来自分类Dev

如何将列重写(复制)到现有的SQLite数据库中

来自分类Dev

在现有的重写规则.htaccess中添加斜杠

来自分类Dev

如何列出 Cinnamon 中所有现有的键盘快捷键?

来自分类Dev

如何自动将外键添加到现有的Rails数据库中?

来自分类Dev

如何将键添加到现有的多个数组

来自分类Dev

如何从文件向现有的空值键字典添加值?

来自分类Dev

如何自动将外键添加到现有的Rails数据库中?

来自分类Dev

如何使用 NSCoding 向现有的键控档案添加新的键和值

来自分类Dev

如何使用javascript在现有的json数组中添加键及其值

来自分类Dev

如何使用外键将值插入到现有的 SQL Server 表中

来自分类Dev

如何在初始化的空字典中存储现有的键和值

来自分类Dev

如何使现有的选项卡在vim中显示为4个空格?

来自分类Dev

如何将www与现有的非www重写规则结合在一起

来自分类Dev

从现有的Docker容器中删除端口绑定

来自分类Dev

在R中合并(绑定)现有的pdf文件

来自分类Dev

绑定现有的DOM元素以查看模型

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何覆盖现有的.txt文件

来自分类Dev

如何更换现有的直放站

来自分类Dev

如何更新现有的.plist?

来自分类Dev

如何访问现有的NLog MemoryTarget

来自分类Dev

如何更新现有的Office插件?

来自分类Dev

如何跟踪现有的ansible项目

来自分类Dev

如何清除现有的setInterval?

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何升级现有的graphenedb实例?

Related 相关文章

热门标签

归档