Vim的NerdTree插件

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

参考:常用文件树快捷键
所有命令及推荐键盘映射:官方

image

在vundle插件管理的方式,直接在~/.vimrc中的Plugin段落中加入`Plugin "scrooloose/nerdtree
"然后重启Vim并输入PluginInstall`,即可完成安装

然后输入: NERDTreeToggle即可打开文件树。当然,默认是关闭的,需要每次都输入命令打开。
还可以设置vim快捷键来映射,在vimrc中加入:

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打开,这样就可以保持各自状态了。

常用键盘映射

image

NerdTree 在 .vimrc 中的常用配置

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

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插件就是vim-devicons,详细配置方法在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-nerdtree-syntax-highlight插件是配合上面vim-devicons插件增强的。直接在vimrc中Plugin 'tiagofumo/vim-nerdtree-syntax-highlight',重启并:PluginInstall即可。效果如下:

image

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

最终配置

插件管理器处:

        "<NERDTREE>Plug 'scrooloose/nerdtree'          " File tree managerPlug 'jistr/vim-nerdtree-tabs'      " enhance nerdtree's tabsPlug 'ryanoasis/vim-devicons'       " add beautiful icons besides filesPlug 'Xuyuanp/nerdtree-git-plugin'  " display git status within NerdtreePlug 'tiagofumo/vim-nerdtree-syntax-highlight' " enhance devicons

配置:

" <Nerdtree>-------------------{">> Basic settingslet g:NERDTreeChDirMode = 2  "Change current folder as rootautocmd BufEnter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) |cd %:p:h |endif">> UI settingslet NERDTreeQuitOnOpen=1   " Close NERDtree when files was openedlet NERDTreeMinimalUI=1    " Start NERDTree in minimal UI mode (No help lines)let NERDTreeDirArrows=1    " Display arrows instead of ascii art in NERDTreelet NERDTreeChDirMode=2    " Change current working directory based on root directory in NERDTreelet g:NERDTreeHidden=1     " Don't show hidden fileslet NERDTreeWinSize=30     " Initial NERDTree widthlet NERDTreeAutoDeleteBuffer = 1  " Auto delete buffer deleted with NerdTree"let NERDTreeShowBookmarks=0   " Show NERDTree bookmarkslet 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 windowsautocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif" Customize icons on Nerdtreelet g:NERDTreeDirArrowExpandable = '▸'let g:NERDTreeDirArrowCollapsible = '▾'">> NERDTREE-GIT" Special characterslet 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://www.mzph.cn/news/283067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java简单投票系统_JSP实现的简单Web投票程序代码

本文实例讲述了JSP实现的简单Web投票程序。分享给大家供大家参考。具体如下&#xff1a;这里使用文本文件作为数据存储的投票系统。1. vote.java&#xff1a;package vote;import java.io.*;import java.util.*;public class vote {public String filePath "";publi…

HTTP2指纹识别(一种相对不为人知的网络指纹识别方法)

这是关于网络指纹识别的两部分系列的第二部分上一部分我介绍了有关TLS 指纹识别方法&#xff08;以及在不同客户端的指纹有何区别&#xff09;&#xff1a;https://mp.weixin.qq.com/s/BvotXrFXwYvGWpqHKoj3uQHTTP/2 指纹识别和Tls指纹类似也是一种 Web 服务器可以依赖指纹来识…

中兴智能视觉大数据:人脸识别技术目前处于“用的不够,用的不好”

中兴智能视觉大数据报道&#xff1a;在2018年5月30日举行的“人脸识别等AI技术在校园周边安全中的应用”研讨会上&#xff0c;中国人民大学危机管理研究中心主任唐钧指出&#xff0c;人脸识别等AI技术具有“精细识别”、“提前干预”、“及时处置”等优势&#xff0c;有利于促进…

C#反射,性能优化,不止于优化

“ 架构师的价值&#xff0c;在于独立且理性的思考”想要写出灵活而且具有更好适应性的代码&#xff0c;反射是首选方案。反射赋予程序在运行时动态创建实例的能力&#xff0c;可以在程序运行时&#xff08;而非编译时&#xff09;获取实例类型&#xff0c;获取元数据信息&…

设计模式C++实现--Observer模式

2019独角兽企业重金招聘Python工程师标准>>> 观察者模式 当对象间存在一对多关系时&#xff0c;则使用观察者模式&#xff08;Observer Pattern&#xff09;。比如&#xff0c;当一个对象被修改时&#xff0c;则会自动通知它的依赖对象。观察者模式属于行为型模式。…

Liunx 安装mysql 5.6.16

2019独角兽企业重金招聘Python工程师标准>>> 1.卸载原有的mysql 1)先查看原有的mysql rpm -qa|grep -i mysql 2)删除 mysql rpm -e --nodeps 包名 3)删除老版本 mysql的开发头文件和库 rm -fr /usr/lib/mysql rm -fr /usr/include/mysql 注意&#xff1a;卸载后/va…

数据挖掘 pandas基础入门之操作

为什么80%的码农都做不了架构师&#xff1f;>>> 统计 import pandas import numpy# 通过传递一个 numpyarray&#xff0c;时间索引以及列标签来创建一个DataFrame&#xff1a; dates pandas.date_range("20180509", periods6) df pandas.DataFrame(num…

C# Task.Delay()和Thread.Sleep()有什么区别?

很多时候我们需要做一段延时处理&#xff0c;就直接Thread.Sleep(n)处理了&#xff0c;但实际上延时也可以用Task.Delay(n)&#xff0c;那二者之间有没有区别呢&#xff1f;我们先来看一个案例&#xff1a;using System; using System.Threading; using System.Threading.Tasks…

.NET MAUI实战 MessagingCenter

1.概要在.NET MAUI提供了消息机制&#xff0c;该机制为订阅/发布模式。发布-订阅模式是一种消息传递模式&#xff0c;在此模式下&#xff0c;发布者可在无需知道任何接收方&#xff08;称为订阅方&#xff09;的情况下发送消息。同样&#xff0c;订阅方可在不了解任何发布方的情…

洛谷——P1033 自由落体

https://www.luogu.org/problem/show?pid1033#sub 题目描述 在高为 H 的天花板上有 n 个小球&#xff0c;体积不计&#xff0c;位置分别为 0&#xff0c;1&#xff0c;2&#xff0c;…&#xff0e;n-1。在地面上有一个小车&#xff08;长为 L&#xff0c;高为 K&#xff0c;距…

java 接口防刷_java轻量级接口限流/防刷插件

简介call-limit提供接口限流、防刷的功能&#xff0c;插件基于spring开发&#xff0c;在应用应用的任何一个逻辑层皆可使用(web、service、dao)&#xff0c;插件支持单机应用下的限流和分布式应用的限流(分布式应用限流需要依赖redis)&#xff0c;在简单业务场景下插件可为大家…

【leetcode】521. Longest Uncommon Subsequence I

题目如下&#xff1a; 解题思路&#xff1a;本题有点意思。首先如果输入的两个字符串都为空&#xff0c;那么结果是-1&#xff1b;如果两个字符串长度不一样&#xff0c;那么结果是较长的字符串的长度&#xff0c;因为较长的字符串肯定是自身的子序列&#xff0c;但一定不是较短…

【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?...

【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍&#xff1f;独立观察员 2022 年 9 月 4 日在编写 “Wifi 固定器 [1]” 程序时&#xff0c;按如下方式使用了定时器&#xff1a;// 声明&#xff1b; private Timer _Timer new Timer() { …

JS魔法堂:判断节点位置关系

一、前言                           在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系&#xff0c;通过jQuery我们可以轻松搞定&#xff0c;但原生JS呢&#xff1f;下面我将整理各种判断方法&#xff0c;以供日后查阅。 二…

ChartCtrl源码剖析之——CChartAxis类

CChartAxis类用来绘制波形控件的坐标轴&#xff0c;这个源码相对较复杂&#xff0c;当初阅读的时候耗费了不少精力来理解源码中的一些实现细节。 CChartAxis类的头文件。 #if !defined(AFX_CHARTAXIS_H__063D695C_43CF_4A46_8AA0_C7E00268E0D3__INCLUDED_) #define AFX_CHARTA…

基于.net开发的自助餐饮系统

本文系 EMQ&Intel 联合举办的首届“中国物联网数据基础设施最佳案例评选大赛“个人开发者赛道一等奖作品。项目简介智能餐饮自助结算系统是一个由称重系统、显示屏、自助扫码盒和 Intel CPU 组成的智能自助结算终端&#xff0c;将装有菜品的托盘放到秤盘上结算&#xff0c;…

java打包维护_java打包详解

from yahh2008的blog: http://www.matrix.org.cn/blog/yahh2008/兄弟&#xff0c;对java着迷吗&#xff0c;或者是为了自己的生计&#xff0c;不论怎样都欢迎你进入精彩java世界&#xff0c;welcome&#xff01;可能你刚刚对每个人说&#xff1a;Hello World&#xff01;也或者…

Linux高级文本处理之sed(三)

sed高级命令sed允许将多行内容读取到模式空间&#xff0c;这样你就可以匹配跨越多行的内容。本篇笔记主要介绍这些命令&#xff0c;它们能够创建多行模式空间并且处理之。其中&#xff0c;N/D/P这三个多行命令分别对应于小写的n/d/p命令&#xff0c;后者我们在上一篇已经介绍。…

如何在 C# 程序中注入恶意 DLL ?

一&#xff1a;背景 前段时间在训练营上课的时候就有朋友提到一个问题&#xff0c;为什么 Windbg 附加到 C# 程序后&#xff0c;程序就处于中断状态了&#xff1f;它到底是如何实现的&#xff1f;其实简而言之就是线程的远程注入&#xff0c;这一篇就展开说一下。二&#xff1a…

练习题|网络编程-socket开发

原文&#xff1a;https://www.cnblogs.com/shengyang17/p/8822745.html 1、什么是C/S架构&#xff1f; C指的是client&#xff08;客户端软件&#xff09;&#xff0c;S指的是Server&#xff08;服务端软件&#xff09;&#xff0c;C/S架构的软件&#xff0c;实现服务端软件与客…