Linux系列讲解 —— VIM配置与美化

目录

  • 1. Vim基本配置
  • 2. 插件管理器Vundle
    • 2.1 下载Vundle
    • 2.2 在vimrc中添加Vundle的配置
  • 3. Vundle的使用
    • 3.1 安装常用插件
      • 3.1.1 NERDTree
    • 3.2 卸载插件

1. Vim基本配置

1.1 配置文件
vim的配置文件有两处,请根据实际情况选择修改哪个。

(1) 全局配置文件( /etc/vim/vimrc )
此文件的配置会对系统内所有用户有效,包括root用户。

(2) 单用户配置文件( /home/xxx/.vimrc )
此文件的配置只对用户xxx有效。这里xxx代表用户名,比如用户名是sun,则修改/home/sun/.vimrc。如果当前登录用户就是sun,也可以直接修改~/.vimrc,因为在linux系统中符号 ~ 等同于用户的家路径,按照此处例子即为/home/sun。

1.2 基本配置
vimrc文件的注释要以双引号 ( " ) 开头。

syntax on                     " 设置语法高亮                                                                                                                                                                              
set nu                        " 设置行数显示
set tabstop=4                 " 设置tab缩进长度为4空格
set autoindent                " 设置自动缩进,适用所有类型文件
set cindent                   " 针对C语言的自动缩进功能,在C语言的编程环境中,比autoindent更加精准
set list lcs=tab:\|\          " 设置tab提示符号为 "|",注意最后一个反斜杠后面要留有空格
set cc=0                      " 设置高亮的列,这里设置为0,代表关闭
set cursorline                " 突出显示当前行

基本配置后,效果如下图
在这里插入图片描述

2. 插件管理器Vundle

vim可以安装插件来增加很多功能。这里推荐一个插件管理器Vundle,用来安装各种插件,比自己在网上一个个找插件安装更加高效。

2.1 下载Vundle

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

2.2 在vimrc中添加Vundle的配置

添加如下内容:

set nocompatible        " 关闭兼容模式(必须)。
filetype off            " 必须添加
set rtp+=~/.vim/bundle/Vundle.vim   " 设置包括vundle和初始化相关的runtime pathcall vundle#begin()                 " vundle开始(必须)
Plugin 'VundleVim/Vundle.vim'       " 用来管理Vundle本身的插件(必须)
call vundle#end()                   " vundle结束(必须)filetype plugin indent on           " 开启文件类型检测和缩进

注:
(1) 上面这段必须要写在vimrc文件的开头,否则安装插件会有问题。
(2) set compatible: 兼容模式,指去掉vim的扩展功能,尽量模拟vi的的行为。
(3) set nocompatible: 关闭兼容模式,使用Vundle时必须指定为此模式。
(4) vundle开始语句可以指定插件的安装路径,例如:call vundle#begin(‘~/some/path/here’)。
(5) 需要添加的插件放到 call vundle#begin()call vundle#end() 之间。
(6) 如果不想使用插件改变缩进,可以将 filetype plugin indent on 改为 filetype plugin on

3. Vundle的使用

3.1 安装常用插件

3.1.1 NERDTree

安装NERDTree后,vim就可以使用目录树了。
在这里插入图片描述

1. 在vimrc文件中添加下面语句。

Plugin 'scrooloose/nerdtree'   " 这句记得放到 call vundle#begin() 和 call vundle#end() 之间" 下面几行是配置NERDTree插件的,正常也可以不用配置,看自己需求。
autocmd VimEnter * NERDTree    " 打开文件后自动打开NERDTree
map <F2> :NERDTreeMirror<CR>   " 通过F2映射其他标签页
map <F3> :NERDTreeToggle<CR>   " 通过F3展开/收缩NERDTree
map f :NERDTreeFind<CR>        " 通过按键f跳转NERDTree光标到当前打开的文件

这里解释一下map :NERDTreeToggle<CR>语句:
map <F3>       代表F3按键
:NERDTreeToggle   代表末行模式下输入NERDTreeToggle
<CR>         代表换行

2. 使用vim打开一个文件,在末行模式下输入命令PluginInstall后回车,等待左下角出现Done!,则代表安装完成。
在这里插入图片描述

如果PluginInstall程序安装失败,可以使用 l (小写L) 查看安装日志。有时候会出现下载插件超时的情况,这种情况可以把下载源更改为国内镜像源(国内镜像源请查看Git系列讲解(六):Git使用中的问题汇总),方法如下:
.
(1) 替换国内镜像源(~/.vim/bundle/Vundle.vim/autoload/vundle/config.vim)
在这里插入图片描述>
(2) 注释掉下面内容(~/.vim/bundle/Vundle.vim/autoload/vundle/installer.vim)
在这里插入图片描述

3. NERDTree安装完后,使用(1)中设置的快捷键打开或关闭目录树。
在这里插入图片描述

4. NERDTree常用快捷键
(1) 窗口切换,分割,关闭:

快捷键作用
ctrl+w+w在各个窗口之间相互切换
ctrl+w+h向左侧窗口切换
ctrl+w+j向下侧窗口切换
ctrl+w+k向上侧窗口切换
ctrl+w+l (小写L)向右侧窗口切换
i水平分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新开窗口
gi与 i 不同处是光标不会跳转,依旧停留在nerdtree中
s垂直分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新开窗口
gs与 s 不同处是光标不会跳转,依旧停留在nerdtree中
光标在nerdtree窗口时,按q关闭nerdtree,或者使用.vimrc中设置的快捷键

(2) 打开文件

快捷键作用
o 或 回车(光标在文件上时)打开文件,光标会跳转到新打开的窗口
go (光标在文件上时)打开文件,光标不会跳转到新打开的窗口

(3) NERDTree窗口内部行为

快捷键作用
?打开帮助页面,再次按 ? 可以退出帮助页面。不退出也行,打开帮助页面后,目录树在帮助文字后面,往下翻就行。
m打开NERDTree菜单页,菜单页有很多实用功能,包括创建,删除,移动节点。还有在文件资源管理器打开当前节点等。

关闭菜单:按两次Esc键
在这里插入图片描述
o 或 回车(光标在目录上时)展开或收缩该目录
O(光标在目录上时)递归展开选中节点下的所有目录,目录级别多时很耗时,不建议使用。
x(光标在任意文件或目录上时)父目录收缩,光标跳回父目录处
X(光标在任意文件或目录上时)光标所在目录,其下所有子目录收缩。
I(大写i)显示/关闭隐藏文件
C切换NERDTree的根节点为光标所在路径
cd设置CWD为NERDTree中光标所在路径
CD切换NERDTree根节点为CWD路径,注意cd和CD是配合使用的。
u设置当前根节点的上一级为新的根节点
U设置当前根节点的上一级为新的根节点,但是维持原来目录打开的状态
p光标移动到父目录
P光标移动到当前nerdtree的根节点
G光标移动到当前nerdtree的最后一项
ctrl+j光标移动到下一个同级别节点
ctrl+k光标移动到上一个同级别节点
K根据当前光标所在目录,移动到该目录的第一项
J根据当前光标所在目录,移动到该目录的最后一项
:NERDTree <路径>新建并展开NERDTree,根节点为后面的路径参数。若不指定路径,则根节点默认为终端运行vim时的当前路径。
:NERDTreeClose关闭NERDTree
:NERDTreeToggle切换NERDTree的展开收缩

注:
1.NERDTreeToggle默认展开的NERDTree,内容与上次收缩前一样。如果之前没有打开过NERDTree,则此时相当于命令NERDTree,以当前打开文件所在路径作为根节点。
2.NERDTreeToggle也可以后接路径参数,此时相当于命令NERDTree后接路径参数。
:NERDTreeMirror将其它标签页中的NERDTree镜像过来,有镜像关系的这些NERDTree,标签页上显示的NERDTree名称都是一样的(例如:NERD_tree_1),并且无论哪一个有变更,其他的NERDTree都会有一致性变化。

注:
1.上面的NERDTree命令相当于重新创建一个NERDTree实例,所以使用NERDTree命令会破坏镜像关系。
2.如果有多个不同的NERDTree(例如NERD_tree_1,NERD_tree_2),做镜像时会提示选择哪一个。
:NERDTreeFind <文件/目录路径>1.光标在编辑窗口时,不加参数,运行命令后NERDTree窗口光标跳转到当前打开的文件处。
2.有参数时,就直接展开指定路径的父节点,同时光标也移动到指定路径的父节点。
3.光标在NERDTree窗口时,不加参数,运行命令后根节点跳转到终端路径的上一级,并展开这个路径节点(比如执行vim时,终端的当前路径为/home/sun/,那么执行NERDTreeFind后,根节点就变成了/home/,并且/home/sun/节点会展开)。

(3) 标签页

快捷键作用
t光标在nerdtree上的文件时,按 t 会新建标签来显示该文件,并且会跳转到新标签页。
T光标在nerdtree上的文件时,按 T 会新建标签来显示该文件,但不会跳转到新标签页。
gt向后切换标签页,不方便使用
gT向前切换标签页,不方便使用
:tabp向前切换标签页,建议在.vimrc中创建快捷键,方便使用
:tabn向后切换标签页,建议在.vimrc中创建快捷键,方便使用
:tabnew <文件路径>新建标签页,并在新标签页上打开指定文件
:tabc关闭当前标签页
:tabo关闭其他所有标签页
:tabs查看所有标签页

(4) 书签
以下命令只在NERDTree的buffer中有效,并且操作的时候,光标要切换到NERDTree窗口才可使用。

快捷键作用
:Bookmark <书签名称>给光标处的文件或目录创建标签,标签名注意不要有空格。
:BookmarkToRoot <书签名称>指定某目录书签作为根节点打开NERDTree。
:RevealBookmark <书签名称>展开指定书签的所有上层结点,光标跳转到该书签的最上层节点。

注:
1.如果NERDTree中此标签已经展开,则此命令可以直接将光标跳转到该标签上。
2.书签只有在当前目录下时,才可使用此命令,否则会报错。
:OpenBookmark <书签名称>如果是文件书签,则直接在编辑窗口打开该文件,NERDTree窗口不变。
如果是目录书签,则NERDTree窗口根节点变更为该目录,编辑窗口不变。

注: 不同于RevealBookmark,书签不在当前目录下时,也可以使用。
:EditBookmarks打开~/.NERDTreeBookmarks文件,此文件是记录书签的文件。

注:
1.在~/.NERDTreeBookmarks中添加或删除书签后,需要使用ReadBookmarks命令重新读取,才可以生效。
2.即使运行ReadBookmarks后,NERDTree中书签显示也没有变化,需要使用NERDTree命令重新创建实例才能刷新。
:ReadBookmarks重新读取~/.NERDTreeBookmarks书签文件
:WriteBookmarks将书签写入文件~/.NERDTreeBookmarks,不过实测发现用不上这个命令,创建书签后会自动写入书签文件。
:ClearBookmarks <书签名称>清除指定书签;如果未指定书签,则清除所有书签
:ClearAllBookmarks清除所有标签

3.2 卸载插件

这里以NERDTree插件为例。
1. 在vimrc中删除或注释掉不用的插件。
2. vim打开一个文件,在末行模式下输入PluginClean后回车,再输入Y确认回车,等待左下角出现Done!,则代表卸载完成。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120139.shtml

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

相关文章

JVM相关的面试题

一、什么是程序计数器 二、简要的介绍一下堆 三、什么是虚拟机栈 四、能不能解释下方法区 五、你听过直接内存吗&#xff1f; 六、什么是类加载器&#xff0c;类加载器有哪些 七、什么是双亲委派模型 八、JVM为什么采用双亲委派机制 九、类装载的执行过程 十、对象什么时候被垃…

MATLAB中创建并计算多项式

目录 表示多项式 多项式的计算 此示例说明如何在 MATLAB 中将多项式表示为向量以及根据相关点计算多项式。 表示多项式 MATLAB 将多项式表示为行向量&#xff0c;其中包含按降幂排序的系数。例如&#xff0c;三元素向量 p [p2 p1 p0]; 表示多项式&#xff1a; 创建一个向量…

使用BufferWriter进行文件的写入操作

public class BufferedWirter_ {public static void main(String[] args) throws IOException {String filepath "e:\\ABC.txt";//创建BufferedWrite对象BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(filepath,true));//BufferedWriter 并没有…

pycharm运行R语言脚本(环境安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&#xff0c;它为Intellij IDEA集成开发环境添加了对R语…

PowerPC T2080部分板卡产品介绍

T2080是NXP公司PowerPC T系列的中高端芯片&#xff0c;它具备4核8线程的E6500 高性能CPU核&#xff0c;同时具备8组10Gb和8组8Gb Serdes Lanes&#xff0c;Serdes可复用成SRIO、PCIE、XFI、SGMII接口&#xff0c;因此T2080具有很强的数据处理能力和广泛的总线互联能力。 科技的…

elementui时间日期组件右边自定义图标

效果 改为 首先是将左边的清除图标关闭 然后是将右边的图标设置为display&#xff1a;none,设置宽度&#xff0c;左右内边距 最后是 mounted() {/*思路&#xff1a;通过document文档&#xff0c;选中日期时间选择器元素&#xff0c;然后创建一个i标签&#xff0c;并指定其类…

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目&#xff0c;是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点&#xff1a; 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

ENSP模拟CE12800 SSH一键配置小工具

平时做自动化开发实验都是以SSH连接为基底的,经常做完一个实验新建实验又要去重新配置SSH,就会比较麻烦,所以自己做了个偷懒小工具分享给大家 使用方法: 1.小工具图 2.拓扑图 拓扑图 保证1/0/0口和云连接 3.小工具各个控件介绍 3.1 串口号:右键点击拓扑图中的12800交换机,…

Unity Shader Graph 风格化熔岩

Unity ShaderGraph 合集_哔哩哔哩_bilibili

设计模式——UML类图

目录 UML类图介绍UML图UML图的分类 关系依赖关系泛化关系实现关系关联关系聚合关系 UML类图 介绍 uml(统一建模语言)&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;他用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定&#xff0c;就像…

Linux - 进程状态 - Linux 当中的进程状态是如何维护的?

进程状态 一个进程在 系统当中有很多的状态&#xff0c;比如&#xff1a;一个进程正在被cpu执行&#xff0c;那这个进程就是一个 r 状态&#xff1b;一个进程已经准备好了&#xff0c;但是其中的运行这个进程需要的资源没有准备好&#xff0c;那么这个进程一人不能运行。 比如…

如何在群晖NAS中搭建WebDav服务,并实现公网访问

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后&#xff0c;启动webdav服务&#xff0c;并勾选HTTP复选…

物流数字化转型有什么意义?

物流领域的数字化转型具有深远的意义&#xff0c;因为它彻底改变了供应链中的货物和信息流动方式。这一转变是由数字技术集成推动的&#xff0c;旨在提高效率、可见性和客户满意度。以下是其重要性的一些关键方面&#xff1a; 1.提高效率和降低成本&#xff1a;数字化转型通过…

使用了lua-resty-http库进行 爬虫

lua-resty-http是一个基于OpenResty的HTTP客户端库&#xff0c;用于在Lua中进行HTTP请求和响应的处理。它提供了简单易用的接口&#xff0c;可以方便地进行网页抓取和爬虫开发。 使用lua-resty-http进行爬虫&#xff0c;需要先安装OpenResty和lua-resty-http库&#xff0c;并将…

Hadoop 请求数据长度 Requested Data length 超过配置的最大值

一、问题 现象 Spark 任务速度变慢&#xff0c;也不失败。 DataNode 内存足够 CPU 负载不高 GC 时间也不长。 查看 DataNode 日志&#xff0c;发现有些日志出现很多 Netty RPC 超时。超时的 destination 是一个 NameNode 节点&#xff0c;然后查看 NameNode 节点的日志&…

Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

Unity的碰撞检测(四)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(三)”继续探讨两个游戏对象具备刚体的触发检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具备触发器和刚体且属性一致的条件下&#xff0c;若二者刚体的BodyType…

分布式日志和链路追踪

分布式日志 实现思路 分布式日志框架服务的实现思路基本是一致的&#xff0c;如下&#xff1a; 日志收集器&#xff1a;微服务中引入日志客户端&#xff0c;将记录的日志发送到日志服务端的收集器&#xff0c;然后以某种方式存储数据存储&#xff1a;一般使用ElasticSearch分…

【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象

XMLConfigBuilder是Mybatis中定义的进行构建Configuration对象的类,此类用于读取XML配置文件创建并初始化Configuration对象; 上一篇中我们介绍了XMLConfigBuilder构建器加载XML配置文件以及创建Configuration对象https://blog.csdn.net/m1729339749/article/details/133983…

护眼灯买哪种好? 推荐五款儿童护眼台灯

台灯如何选择&#xff0c;随着人们生活水平的提高及科技的不断进步&#xff0c;台灯的品质也得到了极大的提高&#xff0c;在生活中很多时候都需要使用台灯&#xff0c;但是市面上的台灯那么多&#xff0c;台灯如何选择。本次小编为大家推荐五款好用的护眼灯。 1.书客护眼台灯L…