解決在 Vim NERDTree window 裡誤切換 buffer 的問題

這篇是承自之前提過的問題,今天終於花了一點時間,看了一下 NERDTree 的 source code 找出解法。

在自己的 .vimrc 裡新增這麼一段自訂 function:

function! LeaveNERDTree()
  if winnr() == g:NERDTree.GetWinNum()
    wincmd p
  endif
endfunction

大概的邏輯是這樣:

  1. 如果目前所在視窗的號碼等於 NERDTree 的視窗號碼
  2. 不管怎樣,跳開就對了,cursor 就是不要在 NERDTree 裡面

然後就可以套用到自己切換 buffer 的快速鍵上:

nnoremap <silent> <F3> :call LeaveNERDTree()<CR>:bprev<CR>
nnoremap <silent> <F4> :call LeaveNERDTree()<CR>:bnext<CR>

短短幾行,解決了長期以來的、常常為了自己操作錯誤而惹得很毛的問題,怨自己當初為什麼沒仔細去看 source code?

CC BY-SA 4.0 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Leave a Reply

Your email address will not be published. Required fields are marked *