在 vim 中重新映射 Ctrl-l 适用于我的个人设置,但不适用于我的工作设置。如何让它在我的工作环境中发挥作用?

Remapping Ctrl-l in vim works in my personal setup, but not my work setup. How do I make it work in my work environment?

在我的个人配置文件中,我有以下映射:

nnoremap <silent> <C-l> :nohlsearch<CR><C-l>

查看实际内容here

此设置在我的个人设置中运行良好,但不适用于我的工作环境。我的个人系统有 8.0+ 版本,但我的工作系统有 7.4。我无法显示我的工作环境,但它是一个文件副本,其中删除了所有多余和不可用的映射。其他映射工作正常。

这个想法是从之前的 Whosebug 问题中得到的,至少已经有 6 年了,所以我认为这不是版本问题。但我想不出还有什么。

我怎样才能找到并解决这个问题?

遇到这种麻烦,首先要做的是检查':map'的输出。

在这种情况下有一个后来的映射。重新映射我的设置使事情按预期工作。

我的问题出处不同,但最终效果是一样的。当我在选项卡中打开文件列表时,我无法在 vim 的选项卡之间导航,我有映射 ctrl+h 移动左选项卡和 ctrl+l 移动右选项卡,这是因为打开时默认文件浏览器 ctrl+l 被重新映射到 n <C-L> @<Plug>NetrwRefresh.

在我弄清楚问题所在后,我发现了这个:

https://github.com/christoomey/vim-tmux-navigator/issues/189

修改 vimrc 后看起来像这样:

nmap <C-h> :tabprev<CR>
nmap <C-l> :tabnext<CR>
nmap cw :tabnew<CR>

augroup netrw_mapping
  autocmd!
  autocmd filetype netrw call NetrwMapping()
augroup END

function! NetrwMapping()
  nnoremap <buffer> <C-l> :tabnext<CR>
endfunction

已修复。