1. 程式人生 > >如何優雅地使用 VIM 檔案管理外掛 NERDTree

如何優雅地使用 VIM 檔案管理外掛 NERDTree

相信所有使用 vim 的同學都知道檔案管理外掛 NERDTree,這個幾乎是所有擁護 vim 的開發人員都會使用的外掛,可是我在剛開始使用的時候,完全用錯了這個外掛,使用起來反而是負擔了。今天就總結一下如何優雅的使用 NERDTree。

安裝和基本用法

安裝外掛建議使用 Vundle 進行安裝, Vundle 的用法很簡單,可以到 GitHub 上面檢視。

在 NERDTree 操作區的一些基本操作:

  • ?: 快速幫助文件
  • o: 開啟一個目錄或者開啟檔案,建立的是 buffer,也可以用來開啟書籤
  • go: 開啟一個檔案,但是游標仍然留在 NERDTree,建立的是 buffer
  • t
    : 開啟一個檔案,建立的是Tab,對書籤同樣生效
  • T: 開啟一個檔案,但是游標仍然留在 NERDTree,建立的是 Tab,對書籤同樣生效
  • i: 水平分割建立檔案的視窗,建立的是 buffer
  • gi: 水平分割建立檔案的視窗,但是游標仍然留在 NERDTree
  • s: 垂直分割建立檔案的視窗,建立的是 buffer
  • gs: 和 gi,go 類似
  • x: 收起當前開啟的目錄
  • X: 收起所有開啟的目錄
  • e: 以檔案管理的方式開啟選中的目錄
  • D: 刪除書籤
  • P: 大寫,跳轉到當前根路徑
  • p: 小寫,跳轉到游標所在的上一級路徑
  • K: 跳轉到第一個子路徑
  • J: 跳轉到最後一個子路徑
  • <C-j><C-k>: 在同級目錄和檔案間移動,忽略子目錄和子檔案
  • C: 將根路徑設定為游標所在的目錄
  • u: 設定上級目錄為根路徑
  • U: 設定上級目錄為跟路徑,但是維持原來目錄開啟的狀態
  • r: 重新整理游標所在的目錄
  • R: 重新整理當前根路徑
  • I: 顯示或者不顯示隱藏檔案
  • f: 開啟和關閉檔案過濾器
  • q: 關閉 NERDTree
  • A: 全屏顯示 NERDTree,或者關閉全屏

以上是一些基本的用法,平時常用的就幾個。

NERDTree

NERDTree

增加一些配置

在使用 NERDTree 的過程中有一些不太方便的地方就是開啟的各個檔案不共享 NERDTree,所以就需要配合安裝一個共享外掛 

vim-nerdtree-tabs, 這就讓你感覺只是打開了一個 NERDTree

  1. " 關閉NERDTree快捷鍵
  2. map <leader>t :NERDTreeToggle<CR>
  3. " 顯示行號
  4. let NERDTreeShowLineNumbers=1
  5. let NERDTreeAutoCenter=1
  6. " 是否顯示隱藏檔案
  7. let NERDTreeShowHidden=1
  8. " 設定寬度
  9. let NERDTreeWinSize=31
  10. " 在終端啟動vim時,共享NERDTree
  11. let g:nerdtree_tabs_open_on_console_startup=1
  12. " 忽略一下檔案的顯示
  13. let NERDTreeIgnore=['\.pyc','\~$','\.swp']
  14. " 顯示書籤列表
  15. let NERDTreeShowBookmarks=1

在 NERDTree 中顯示 git 資訊

開發的過程中,我們希望 git 資訊直接在 NERDTree 中顯示出來, 和 Eclipse 一樣,修改的檔案和增加的檔案都給出相應的標註, 這時需要安裝的外掛就是 nerdtree-git-plugin

配置資訊如下

  1. let g:NERDTreeIndicatorMapCustom = {
  2. \ "Modified" : "✹",
  3. \ "Staged" : "✚",
  4. \ "Untracked" : "✭",
  5. \ "Renamed" : "➜",
  6. \ "Unmerged" : "═",
  7. \ "Deleted" : "✖",
  8. \ "Dirty" : "✗",
  9. \ "Clean" : "✔︎",
  10. \ "Unknown" : "?"
  11. \ }

下面的動畫展示了這個外掛配合後的效果:

nerdtree-git-plugin

nerdtree-git-plugin

NERDTree 配合使用這兩個外掛檔案管理就很棒了,當然如果再加上 ctrlp,那就無敵了。