Vim:不要重新映射历史记录中的密钥或帮助缓冲区

时间:2016-10-31 00:02:47

标签: vim

我已将此添加到我的.vimrc,以便在不离开普通模式的情况下附加换行符:

nmap <Enter> o<Esc>

问题是当我q:到命令历史记录缓冲区时。此绑定与 Enter 的使用冲突,用于从历史记录中选择命令。一个较小的问题是当阅读帮助页面时,按 Enter 将显示该文件为只读的警告。如何以忽略这两个上下文的方式重新映射此密钥?

2 个答案:

答案 0 :(得分:1)

您可以通过缓冲区本地映射来撤消命令行窗口的全局映射:

autocmd CmdwinEnter * nnoremap <buffer> <Enter> <Enter>

(我的ingo-library plugin为此提供了通用ingo#window#cmdwin#UndefineMappingForCmdwin()功能。)

对于帮助缓冲区,请使用相同的方法,但触发FileType事件:

autocmd FileType help nnoremap <buffer> <Enter> <Enter>

答案 1 :(得分:0)

您可以使用此方法https://stackoverflow.com/a/10410590/3627387

使用autocmd进行设置
let blacklist = ['nofile', 'help']
autocmd FileType * if index(blacklist, &bt) < 0 | nmap <Enter> o<Esc>

我们在这里检查缓冲区类型:help 'buftype'