博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vim的NerdTree插件
阅读量:5951 次
发布时间:2019-06-19

本文共 5899 字,大约阅读时间需要 19 分钟。

一个项目文件多起来时,左边的文件树菜单是必要的。

image

在vundle插件管理的方式,直接在~/.vimrc中的Plugin段落中加入`Plugin "scrooloose/nerdtree

"然后重启Vim并输入PluginInstall`,即可完成安装

然后输入: NERDTreeToggle即可打开文件树。当然,默认是关闭的,需要每次都输入命令打开。

还可以设置vim快捷键来映射,在vimrc中加入:

map 
:NERDTreeMirror
map
:NERDTreeToggle

切换工作台和目录

ctrl + w + h    光标 focus 左侧树形目录ctrl + w + l    光标 focus 右侧文件显示窗口ctrl + w + w    光标自动在左右侧窗口切换ctrl + w + r    移动当前窗口的布局位置o       在已有窗口中打开文件、目录或书签,并跳到该窗口go      在已有窗口 中打开文件、目录或书签,但不跳到该窗口t       在新 Tab 中打开选中文件/书签,并跳到新 TabT       在新 Tab 中打开选中文件/书签,但不跳到新 Tabi       split 一个新窗口打开选中文件,并跳到该窗口gi      split 一个新窗口打开选中文件,但不跳到该窗口s       vsplit 一个新窗口打开选中文件,并跳到该窗口gs      vsplit 一个新 窗口打开选中文件,但不跳到该窗口!       执行当前文件O       递归打开选中 结点下的所有目录m    文件操作:复制、删除、移动等

切换标签页

:tabnew [++opt选项] [+cmd] 文件      建立对指定文件新的tab:tabc   关闭当前的 tab:tabo   关闭所有其他的 tab:tabs   查看所有打开的 tab:tabp   前一个 tab:tabn   后一个 tab标准模式下:gT      前一个 tabgt      后一个 tab

刚开始使用时候的小问题

目前问题是,不能保存所有打开文件的状态。在同一个tab中打开另一个文件时,之前文件的编辑历史都会丢失,也就是没法u撤销编辑。即使有相关的方法控制这些,只是作为一个文件菜单来说,这也太麻烦了。

解决方案:
文件都在新tab打开,这样就可以保持各自状态了。

常用键盘映射

image

NerdTree 在 .vimrc 中的常用配置

autocmd vimenter * NERDTree  "自动开启Nerdtree"let g:NERDTreeWinSize = 25 "设定 NERDTree 视窗大小"开启/关闭nerdtree快捷键map 
:NERDTreeToggle
"let NERDTreeShowBookmarks=1  " 开启Nerdtree时自动显示Bookmarks"打开vim时如果没有文件自动打开NERDTreeautocmd 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 prettierlet NERDTreeMinimalUI = 1let NERDTreeDirArrows = 1

Nerdtree隐藏某些指定文件

Vim经常产生swp缓存文件,还有一些python产生的pyc文件,Nerdtree显示出来很不好看,最好屏蔽掉。

在vimrc中配置这几句话可以达到效果:

" 不显示隐藏文件let g:NERDTreeHidden=0" 过滤: 所有指定文件和文件夹不显示let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']  

恢复显示隐藏的文件的命令,在Nerdtree中按Ctrl-I,其中I是大写。

Nerdtree刷新

正常下Nerdtree是不会自动刷新的,文件删除了,多了都不会自动显示。

但是其实不用退出vim,
r就一下子刷新了。

NerdTree的美化

用多了Vim,就需要nerdtree树形菜单,用多了菜单,就像把它美化。

一般最常用的美化Nerdtree插件就是,详细配置方法在github官网有,主要如下:

  1. 安装 Nerd Font字体,。安装字体的方法每个电脑系统不一样。因为全部字体多到3G,所以最快到方法是到点击Download,下载Droid Sans Mono Nerd这个字体,8M左右,下载好了如果是Mac的话,就选择压缩包里的Droid Sans Mono Nerd Font Complete.otf,双击安装。
  2. 在Terminal.app或iTerm2的系统设置里,设置字体为Droid Sans Mono Nerd
  3. ~/.vimrc中插件管理处加入Plugin 'ryanoasis/vim-devicons',重启vim然后:PluginInstall进行下载安装。
  4. ~/.vimrc中配置默认编码set encoding=utf8和默认字体set guifont=DroidSansMono_Nerd_Font:h11

完成。

然后就会变成这个样子:

image

进一步美化: vim-nerdtree-syntax-highlight插件

插件是配合上面vim-devicons插件增强的。直接在vimrc中Plugin 'tiagofumo/vim-nerdtree-syntax-highlight',重启并:PluginInstall即可。效果如下:

image

注意:安装完vim-devicons后,vim速度已经有些许延迟了,再安装这个插件会感受到更明显的延迟。

最终配置

插件管理器处:

        "
            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

配置:

" 
-------------------{ ">> 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" }

转载地址:http://aosxx.baihongyu.com/

你可能感兴趣的文章
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
xml格式文件解析
查看>>
ios百度地图-路径规划
查看>>
Python高效编程技巧
查看>>
配置Eclipse使用maven构建项目默认JDK为1.8
查看>>
jsp内置对象以及jsp动作
查看>>
Struts上路_09-数据类型转换
查看>>
CMake与动态链接库(dll, so, dylib)
查看>>
myeclipse(eclipse)乱码处理
查看>>
SpringBoot 过滤器, 拦截器, 监听器 对比及使用场景
查看>>
数据库索引探索
查看>>
gitlab runner 优化
查看>>
快速添加百度网盘文件到Aria2 猴油脚本
查看>>
mac 无法登录mysql的解决办法
查看>>
Shiro权限判断异常之命名导致的subject.isPermitted 异常
查看>>
Hello world travels in cpp - 字符串(2)
查看>>
struts2自定义拦截器
查看>>
Eclipse安装adt插件后之后看不到andorid manger
查看>>
Kafka服务端脚本详解(1)一topics
查看>>