目录
- 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 会新建标签来显示该文件,但不会跳转到新标签页。 |
: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!
,则代表卸载完成。