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.hqwc.cn/news/150816.html

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

相关文章

RT-Thread 7. RT-Thread Studio ENV修改MCU型号

1. 修改MCU型号 2.在ENV界面输入 scons -c scons --dist3. dist下为更新后完整源代码 4.导入RT-Thread Studio 发现GD32F330已经生效了。 5. 自己编写startup_gd32f3x0.S&#xff0c;准确性待验证 ;/* ; * Copyright (c) 2006-2021, RT-Thread Development Team ; * ; * SPD…

javaEE -10(11000字详解5层重要协议)

一&#xff1a;应用层重点协议 1.1&#xff1a; DNS DNS&#xff0c;即Domain Name System&#xff0c;域名系统。DNS是一整套从域名映射到IP的系统。 TCP/IP中使用IP地址来确定网络上的一台主机&#xff0c;但是IP地址不方便记忆&#xff0c;且不能表达地址组织信息&#x…

c++ qt连接操作sqlite

qt客户端编程,用到数据库的场景不多,但是部分项目还是需要数据库来保存同步数据,客户端用到的数据库,一般是sqlite。 Qt提供了数据库模块,但是qt本身的数据库模块并不好用,会有各种问题, 建议大家不要,可以自己封装数据库的操作。本篇博客介绍qt连接操作sqlite。 sqlit…

【Java 进阶篇】Java Request 继承体系详解

在Java编程中&#xff0c;Request&#xff08;请求&#xff09;是一个常见的概念&#xff0c;特别是在Web开发中。Request通常用于获取来自客户端的信息&#xff0c;以便服务器能够根据客户端的需求提供相应的响应。在Java中&#xff0c;Request通常涉及到一系列类和接口&#…

J2EE项目部署与发布(Windows版本)

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.单机项目的部署 1.1们需要将要进行部署的项目共享到虚拟机中 在部署项目之前&#xff0c;我们先要检查一下…

【面试经典150 | 链表】合并两个有序链表

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 Tag 【递归】【迭代】【链表】 题目来源 21. 合并两个有序链表 题目解读 合并两个有序链表。 解题思路 一种朴素的想法是将两个链表中的值存入到数组中&#xff0c;然后对数组…

HTTP发起请求与收到响应的大致过程

可以《《透视 HTTP 协议》Windows 10 搭建最小实验环境》搭建环境&#xff0c;之后才能进行下边的操作。 1.鼠标左键点击两下www目录下的start.bat批处理文件。 2.打开Wireshark&#xff0c;然后选择Adapter for loopback traffic capture。 3.然后把tcp.port 80 || udp.…

Linux--进程等待

1.什么是进程等待 1.通过系统调用wait/waitid,来对子进程进行进行检测和回收的功能。 2.为什么有进程等待 1.对于每个进程来说&#xff0c;如果子进程终止&#xff0c;父进程没有停止&#xff0c;就会形成僵尸进程&#xff0c;导致内存泄露&#xff0c;为了防止僵尸进程的形成…

win10 + VS2017 编译libjpeg(jpeg-9b)

需要用到的文件&#xff1a; jpeg-9b.zip win32.mak 下载链接链接&#xff1a;https://pan.baidu.com/s/1Z0fwbi74-ZSMjSej-0dV2A 提取码&#xff1a;huhu 步骤1&#xff1a;下载并解压jpeg-9b。 这里把jpeg-9b解压到文件夹"D:\build-libs\jpeg\build\jpeg-9b" …

如何使用 nvm-windows 这个工具来管理你电脑上的Node.js版本

nvm-windows 是一个用于管理在 Windows 上安装的多个 Node.js 版本的工具。以下是安装和使用 nvm-windows 的步骤&#xff1a; 第1步&#xff1a;下载 nvm-windows 访问 nvm-windows 的 GitHub发布页面.下载最新版本的 nvm-setup.zip 文件。 第2步&#xff1a;安装 nvm-wind…

uniapp 单选框以及多选框样式更改

radio以及checkbox默认样式不符合自身需求时&#xff0c;根据自身需求更改样式&#xff0c;以下是自身的示例&#xff1a; 单选&#xff1a; 多选&#xff1a; 由于uniapp自身包含了一套默认的样式&#xff0c;所以如果不想全局更改只想在某个单据页面使用的话&#xff0c;就…

Python 框架学习 Django篇 (六) 数据表关联、ORM关联

在后端服务器开发中&#xff0c;特别是前后端分离的架构中数据库是非常重要的&#xff0c;后端主要就是负责管理数据&#xff0c;而我们经常使用的mysql、oracle 都是关系型数据库&#xff0c;什么是关系型数据库&#xff1f;就是建立在关系模型基础上的数据库&#xff0c;而最…