一個項目文件多起來時,左邊的文件樹菜單是必要的。
參考:經常使用文件樹快捷鍵
全部命令及推薦鍵盤映射:官方python
在vundle插件管理的方式,直接在~/.vimrc
中的Plugin段落中加入`Plugin "scrooloose/nerdtree
"而後重啓Vim並輸入
PluginInstall`,便可完成安裝git
而後輸入: NERDTreeToggle
便可打開文件樹。固然,默認是關閉的,須要每次都輸入命令打開。
還能夠設置vim快捷鍵來映射,在vimrc中加入:github
map <F3> :NERDTreeMirror<CR> map <F3> :NERDTreeToggle<CR>
ctrl + w + h 光標 focus 左側樹形目錄 ctrl + w + l 光標 focus 右側文件顯示窗口 ctrl + w + w 光標自動在左右側窗口切換 ctrl + w + r 移動當前窗口的佈局位置 o 在已有窗口中打開文件、目錄或書籤,並跳到該窗口 go 在已有窗口 中打開文件、目錄或書籤,但不跳到該窗口 t 在新 Tab 中打開選中文件/書籤,並跳到新 Tab T 在新 Tab 中打開選中文件/書籤,但不跳到新 Tab i split 一個新窗口打開選中文件,並跳到該窗口 gi split 一個新窗口打開選中文件,但不跳到該窗口 s vsplit 一個新窗口打開選中文件,並跳到該窗口 gs vsplit 一個新 窗口打開選中文件,但不跳到該窗口 ! 執行當前文件 O 遞歸打開選中 結點下的全部目錄 m 文件操做:複製、刪除、移動等
:tabnew [++opt選項] [+cmd] 文件 創建對指定文件新的tab :tabc 關閉當前的 tab :tabo 關閉全部其餘的 tab :tabs 查看全部打開的 tab :tabp 前一個 tab :tabn 後一個 tab 標準模式下: gT 前一個 tab gt 後一個 tab
目前問題是,不能保存全部打開文件的狀態。在同一個tab中打開另外一個文件時,以前文件的編輯歷史都會丟失,也就是無法u
撤銷編輯。即便有相關的方法控制這些,只是做爲一個文件菜單來講,這也太麻煩了。
解決方案:
文件都在新tab打開,這樣就能夠保持各自狀態了。vim
autocmd vimenter * NERDTree "自動開啓Nerdtree "let g:NERDTreeWinSize = 25 "設定 NERDTree 視窗大小 "開啓/關閉nerdtree快捷鍵 map <C-f> :NERDTreeToggle<CR> "let NERDTreeShowBookmarks=1 " 開啓Nerdtree時自動顯示Bookmarks "打開vim時若是沒有文件自動打開NERDTree autocmd vimenter * if !argc()|NERDTree|endif "當NERDTree爲剩下的惟一窗口時自動關閉 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif "設置樹的顯示圖標 let g:NERDTreeDirArrowExpandable = '▸' let g:NERDTreeDirArrowCollapsible = '▾' let NERDTreeIgnore = ['\.pyc$'] " 過濾全部.pyc文件不顯示 "let g:NERDTreeShowLineNumbers=1 " 是否顯示行號 let g:NERDTreeHidden=0 "不顯示隱藏文件 "Making it prettier let NERDTreeMinimalUI = 1 let NERDTreeDirArrows = 1
Vim常常產生swp緩存文件,還有一些python產生的pyc文件,Nerdtree顯示出來很很差看,最好屏蔽掉。
在vimrc中配置這幾句話能夠達到效果:windows
" 不顯示隱藏文件 let g:NERDTreeHidden=0 " 過濾: 全部指定文件和文件夾不顯示 let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']
恢復顯示隱藏的文件的命令,在Nerdtree中按Ctrl-I
,其中I
是大寫。緩存
正常下Nerdtree是不會自動刷新的,文件刪除了,多了都不會自動顯示。
可是其實不用退出vim,
按r
就一會兒刷新了。app
用多了Vim,就須要nerdtree樹形菜單,用多了菜單,就像把它美化。
通常最經常使用的美化Nerdtree插件就是vim-devicons
,詳細配置方法在github官網有,主要以下:ide
Nerd Font
字體,網址在此。安裝字體的方法每一個電腦系統不同。由於所有字體多到3G,因此最快到方法是到官網首頁點擊Download,下載Droid Sans Mono Nerd
這個字體,8M左右,下載好了若是是Mac的話,就選擇壓縮包裏的Droid Sans Mono Nerd Font Complete.otf
,雙擊安裝。Droid Sans Mono Nerd
。~/.vimrc
中插件管理處加入Plugin 'ryanoasis/vim-devicons'
,重啓vim而後:PluginInstall
進行下載安裝。~/.vimrc
中配置默認編碼set encoding=utf8
和默認字體set guifont=DroidSansMono_Nerd_Font:h11
完成。
而後就會變成這個樣子:佈局
vim-nerdtree-syntax-highlight
插件vim-nerdtree-syntax-highlight
插件是配合上面vim-devicons
插件加強的。直接在vimrc中Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'
,重啓並:PluginInstall
便可。效果以下:字體
注意:安裝完vim-devicons
後,vim速度已經有些許延遲了,再安裝這個插件會感覺到更明顯的延遲。
插件管理器處:
"<NERDTREE> Plug 'scrooloose/nerdtree' " File tree manager Plug 'jistr/vim-nerdtree-tabs' " enhance nerdtree's tabs Plug 'ryanoasis/vim-devicons' " add beautiful icons besides files Plug 'Xuyuanp/nerdtree-git-plugin' " display git status within Nerdtree Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " enhance devicons
配置:
" <Nerdtree>-------------------{ ">> Basic settings let g:NERDTreeChDirMode = 2 "Change current folder as root autocmd BufEnter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) |cd %:p:h |endif ">> UI settings let NERDTreeQuitOnOpen=1 " Close NERDtree when files was opened let NERDTreeMinimalUI=1 " Start NERDTree in minimal UI mode (No help lines) let NERDTreeDirArrows=1 " Display arrows instead of ascii art in NERDTree let NERDTreeChDirMode=2 " Change current working directory based on root directory in NERDTree let g:NERDTreeHidden=1 " Don't show hidden files let NERDTreeWinSize=30 " Initial NERDTree width let NERDTreeAutoDeleteBuffer = 1 " Auto delete buffer deleted with NerdTree "let NERDTreeShowBookmarks=0 " Show NERDTree bookmarks let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '__pycache__'] " Hide temp files in NERDTree "let g:NERDTreeShowLineNumbers=1 " Show Line Number " Open Nerdtree when there's no file opened "autocmd vimenter * if !argc()|NERDTree|endif " Or, auto-open Nerdtree "autocmd vimenter * NERDTree " Close NERDTree when there's no other windows autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " Customize icons on Nerdtree let g:NERDTreeDirArrowExpandable = '▸' let g:NERDTreeDirArrowCollapsible = '▾' ">> NERDTREE-GIT " Special characters let g:NERDTreeIndicatorMapCustom = { \ "Modified" : "✹", \ "Staged" : "✚", \ "Untracked" : "✭", \ "Renamed" : "➜", \ "Unmerged" : "═", \ "Deleted" : "✖", \ "Dirty" : "✗", \ "Clean" : "✔︎", \ 'Ignored' : '☒', \ "Unknown" : "?" \ } ">> NERDTree-Tabs "let g:nerdtree_tabs_open_on_console_startup=1 "Auto-open Nerdtree-tabs on VIM enter ">> Nerdtree-devicons "set guifont=DroidSansMono_Nerd_Font:h11 ">> Nerdtree-syntax-highlighting "let g:NERDTreeDisableFileExtensionHighlight = 1 "let g:NERDTreeDisableExactMatchHighlight = 1 "let g:NERDTreeDisablePatternMatchHighlight = 1 "let g:NERDTreeFileExtensionHighlightFullName = 1 "let g:NERDTreeExactMatchHighlightFullName = 1 "let g:NERDTreePatternMatchHighlightFullName = 1 "let g:NERDTreeHighlightFolders = 1 " enables folder icon highlighting using exact match "let g:NERDTreeHighlightFoldersFullName = 1 " highlights the folder name "let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error " }