Vim

在 vim 的“目錄視圖”中重新映射鍵

  • December 3, 2020

通過在 vim 中打開目錄(例如)獲得的“Netrw 目錄列表”:e .似乎使用了一組與普通 vim 不同的鍵綁定進行導航

我已經重新映射了我的 hjkl 鍵:

noremap d h
noremap h gj
noremap t gk
noremap n l
noremap e d
noremap l n

但是當我在目錄列表中按“t”(又名向上箭頭)時,它實際上會打開游標下的文件,而不是向上。在這種目錄列表模式下如何實現類似的鍵映射?

恐怕我不明白。

$$ deleted some rambling I babbled on with before I figured out the root cause $$

你想達到什麼目的?無論如何,您的 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

由於您無法連接地圖命令,因此必須這樣做。應該為你工作。

我想如果您始終使用 dvorak noremap,那麼您可以刪除 <buffer> 修飾符。

引用自:https://unix.stackexchange.com/questions/31575