一个项目文件多起来时,左边的文件树菜单是必要的。
参考:经常使用文件树快捷键
全部命令及推荐键盘映射:官方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 " }