您通过在 vim 中打开目录获得的“Netrw 目录列表”(例如:e .
)似乎使用了与普通 vim 不同的一组键绑定进行导航
我的 hjkl 键被重新映射如下:
noremap d h
noremap h gj
noremap t gk
noremap n l
noremap e d
noremap l n
Run Code Online (Sandbox Code Playgroud)
但是当我在目录列表中按“t”(又名向上箭头)时,它实际上会打开光标下的文件,而不是向上。在这种目录列表模式下如何实现类似的键映射?
lor*_*nix 12
恐怕我不明白。
[在我找出根本原因之前删除了我胡言乱语的一些乱七八糟的东西]
你想达到什么目的?反正你的 noremap 列表对我来说没有意义。
您使用的是DVORAK 键盘布局,对吗?现在映射开始有意义了。(忘了提...不是我们!)
查看 NETRW 插件的来源,看起来 netrw 缓冲区正在设置 BUFFER ONLY nnoremaps ......当然,它会覆盖你的。我正在寻找解决方案。
据我所知,你必须对 $VIMRUNTIME/autoload/netrw.vim 文件做一些大手术,这会让升级变得很痛苦,并且会在你漂亮干净的地板上喷出 netrw 映射。但另一个想法让我震惊:
netrw 插件在打开缓冲区时将文件类型设置为“netrw”,因此您可以在 .vimrc 中设置一个自动命令,以根据需要在 netrw 窗口中设置所需的键转换。
augroup netrw_dvorak_fix
autocmd!
autocmd filetype netrw call Fix_netrw_maps_for_dvorak()
augroup END
function! Fix_netrw_maps_for_dvorak()
noremap <buffer> d h
noremap <buffer> h gj
noremap <buffer> t gk
noremap <buffer> n l
noremap <buffer> e d
noremap <buffer> l n
" and any others...
endfunction
Run Code Online (Sandbox Code Playgroud)
由于您无法连接地图命令,因此必须这样做。应该为你工作。
我想如果您始终使用 dvorak noremap,那么您可以删除 <buffer> 修饰符。