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 " 突出显示当前行
vim可以安装插件来增加很多功能。这里推荐一个插件管理器Vundle,用来安装各种插件,比自己在网上一个个找插件安装更加高效。
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
添加如下内容:
set nocompatible " 关闭兼容模式(必须)。
filetype off " 必须添加
set rtp+=~/.vim/bundle/Vundle.vim " 设置包括vundle和初始化相关的runtime path
call 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。
1. 在vimrc文件中添加下面语句。
Plugin 'scrooloose/nerdtree' " 这句记得放到 call vundle#begin() 和 call vundle#end() 之间
" 下面几行是配置NERDTree插件的,正常也可以不用配置,看自己需求。
autocmd VimEnter * NERDTree " 打开文件后自动打开NERDTree
map :NERDTreeMirror " 通过F2映射其他标签页
map <F3> :NERDTreeToggle<CR> " 通过F3展开/收缩NERDTree
map f :NERDTreeFind " 通过按键f跳转NERDTree光标到当前打开的文件
这里解释一下
map :NERDTreeToggle
语句:
map代表F3按键
:NERDTreeToggle 代表末行模式下输入NERDTreeToggle
代表换行
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) 文件打开,编辑窗口的切换 / 分割 / 关闭等:
快捷键 | 作用 |
---|---|
o 或 回车(光标在文件上时) | 打开文件,光标会跳转到新打开的窗口 |
go (光标在文件上时) | 打开文件,光标不会跳转到新打开的窗口 |
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) NERDTree窗口内部行为
(3) NERDTree常用命令:
快捷键 | 作用 |
---|---|
:NERDTree <路径> | 新建并展开NERDTree,根节点为后面的路径参数。若不指定路径,则根节点默认为终端运行vim时的当前路径。 |
:NERDTreeClose | 关闭NERDTree |
:NERDTreeToggle | 切换NERDTree的展开和收缩。 注: 1.NERDTreeToggle默认展开的NERDTree,内容与上次收缩前一样。如果之前没有打开过NERDTree,则此时相当于命令NERDTree,打开时根节点默认为终端运行vim时的路径。 2.NERDTreeToggle也可以后接路径参数,此时相当于命令NERDTree后接路径参数(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/节点会展开)。 |
(4) 标签页
快捷键 | 作用 |
---|---|
t | 光标在nerdtree上的文件时,按 t 会新建标签来显示该文件,并且会跳转到新标签页。 |
T | 光标在nerdtree上的文件时,按 T 会新建标签来显示该文件,但不会跳转到新标签页。 |
:tabp | 向前切换标签页,建议在.vimrc中创建快捷键,方便使用 |
:tabn | 向后切换标签页,建议在.vimrc中创建快捷键,方便使用 |
:tabnew <文件路径> | 新建标签页,并在新标签页上打开指定文件 |
:tabc | 关闭当前标签页 |
:tabo | 关闭其他所有标签页 |
:tabs | 查看所有标签页 |
(5) 书签
以下命令只在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 | 清除所有标签 |
这里以NERDTree插件为例。
1. 在vimrc中删除或注释掉不用的插件。
2. vim打开一个文件,在末行模式下输入PluginClean
后回车,再输入Y
确认回车,等待左下角出现Done!
,则代表卸载完成。