Ubuntu 16.04 下 Vim安装及配置

默认已经安装了VIM-tiny

linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al
lrwxrwxrwx 1 root root 17 12月 9 21:12 /etc/alternatives/vi -> /usr/bin/vim.tiny
lrwxrwxrwx 1 root root 20 12月 9 21:13 /usr/bin/vi -> /etc/alternatives/vi
-rw-r--r-- 1 root root 59 12月 23 2015 /usr/lib/x86_64-linux-gnu/espeak-data/voices/asia/vi
-rw-r--r-- 1 root root 1415 11月 11 2015 /usr/share/bash-completion/completions/ldapvi
-rw-r--r-- 1 root root 475 4月 21 2016 /var/lib/dpkg/alternatives/vi

下面我们以Ubuntu14.04(Unity)安装完整版VIM(VIM-basic)为例:

在终端输入以下命令,则会自动安装:

sudo apt-get install vim

自动安装完之后,可以使用以下命令进行查看:

已经添加到系统

update-alternatives --display vi

查看版本

vim --version

VIM配置

注:只对各个用户在自己的当前目录下的.vimrc修改的话,修改内容只对本用户有效,要想全部有效,可以修改/etc/vim/vimrc.

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。

启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为

$vi ~/.vimrc

设置完后 :x或者:x或者wq 进行保存退出即可。

下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料

基本配置[1] [2]

"开启语法高亮
syntax on
"依文件类型设置自动缩进
filetype indent plugin on "显示当前的行号列号:
set ruler
"在状态栏显示正在输入的命令
set showcmd "关闭/打开配对括号高亮
"NoMatchParen
DoMatchParen
行号的显示与隐藏[3]: "显示行号:
set number
"为方便复制,用<F2>开启/关闭行号显示:
nnoremap <F2> :set nonumber!<CR>:set foldcolumn=0<CR>

启用Modeline(即允许被编辑的文件以注释的形式设置Vim选项,详见Vim Wiki: Modeline magic)[4]:

set modeline

如果终端使用的是深色背景:

"为深色背景调整配色
set background=dark

插件管理

下文的配置很多都依赖于第三方开发的 Vim 插件。为了方便地安装和维护这些插件,推荐先安装一种插件管理工具,目前较为流行的是 Vundle 和 pathogen。二者功能类似,但 Vundle 的配置更灵活, pathogen 则相对简洁。二者都能很好地与Git结合,安装插件十分方便。

如果你使用 Git 管理你的配置文件,那么还可以将 Pathogen 或 Vundle 与 Git 的 Submodule 功能管理插件结合[5],使得在多台电脑间同步插件及在本地更新插件变得十分便捷。

# 在存放配置文件的主文件夹下,添加一个 submodule
git submodule add https://github.com/gmarik/vundle.git .vim/bundle/vundle # 用类似的办法添加多个插件后,以后升级插件只需:
git submodule update # 如果其它电脑 checkout 出配置文件后,要先:
git submodule init

插件管理工具无需通过系统的包管理系统安装,只要将需要的文件放在 ~/.vim/目录中即可。这样,一套配置文件也可以方便地用在多个不同的系统环境中。

代码补全

Vim 7已经内置了代码补全功能[6],补全操作可分为两种:

关键字补全

即简单地补全到文档中已有的词,快捷键为 Ctrl-N 或 Ctrl-P。

智能补全

Vim 7中引入 Omni Complete,可根据语义补全,快捷键为 Ctrl-X Ctrl-O。
Vim的补全菜单操作方式与一般IDE的方式不同,可加入如下设置[7]:

"让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
set completeopt+=longest "离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "回车即选中当前项
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "上下左右键的行为
inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"

如需自动补全,可安装AutoComplPop插件,安装后如需在补全是显示文档(预览),可加入设置:

let g:acp_completeoptPreview = 1

注释管理

经常要将一段代码注释掉或取消注释,而尤其对于某些只支持单行注释的语言来说,逐行加注释很麻烦,这时快速注释(或取消注释)代码的插件就显得很有用了。

常见的注释管理插件为The NERD Commenter,默认支持多种语言,使用方法也很简单:只需在可视(V)模式中选择一段代码,按下\cc加逐行注释,\cu取消注释,\cm添加块注释。

如有其它需求,也可考虑comments、EnhCommentify等插件。

缩进

使用自动缩进可能需要设置,vim中对自动缩进的详细设置办法见Vim代码缩进设置。

在不同的模式中调整缩进的方法不同:

插入模式

Ctrl-T增加缩进,Ctrl-D减小缩进。

命令模式

>> 右缩进, << 左缩进,注意n<< 或 n>>是缩进多行,如4>>

可视模式

< 、 > 用于左右缩进, n< 、 n> 可做多节缩进,如 2> 。
另外,= 可对选中的部分进行自动缩进;]p可以实现p的粘贴功能,并自动缩进。

代码浏览与跳转

代码跳转类似于IDE中的Ctrl+点击功能。与代码补全类似,代码浏览工具亦可分为基于文本分析的和基于代码理解的两类。

简单代码跳转

在命令模式下可直接使用下述指令:[8]

跳转到定义

gd到局部变量的定义,gD到全局变量的定义

搜索
*, # 可对光标处的词向前/向后做全词搜索,g*, g# 做相对应的非全词匹配搜索
代码块首尾

[[, ]] 可跳到当前代码块起始或结束的大括号处。

括号首尾

% 可在配对的括号、块首尾之前跳转。

位置历史

Ctrl-O 在历史记录中后台,Ctrl-I 则为前进。

基于代码理解的跳转

该功能依赖于ctags工具。[9]安装好ctags后,在存放代码的文件夹运行

ctags -R .

即可生成一个描述代码结构的tags文件。

提示: ctags的功能很强大,更详细的配置请参考其文档。

建议在~/.vimrc中添加如下配置以使Vim在父目录中寻找tags文件[10]:

set tags=tags;/

设置好后,可在Vim中使用如下功能:Ctrl-]转至最佳匹配的相应Tag,Ctrl-T返回上一个匹配。如果有多个匹配,g Ctrl-]可显示所有备选的tags。如有需要,可互换Ctrl-]和g Ctrl-] [11]:

"在普通和可视模式中,将<c-]>与g<c-]>互换
nnoremap <c-]> g<c-]>
vnoremap <c-]> g<c-]> nnoremap g<c-]> <c-]>
vnoremap g<c-]> <c-]>

就地编译和错误处理

使用:make可调用make命令编译程序,配合Vim内置的QuickFix功能,可以像IDE一样打开一个窗口展示编译错误和警告,通过它还可以方便地跳转到各编译错误的产生位置。

常用的命令有:cw[indow](如有错误打开quickfix窗口)、:cn(跳到下一个错误)、:cp(跳到前一个错误)等,具体可:help quickfix。

如果想在有错时自动打开quickfix窗口[12]:

" 编译后,如有错误则打开quickfix窗口。(光标仍停留在源码窗口)
"
" 注意:需要开启netsting autocmd
autocmd QuickFixCmdPost [^l]* nested cwindow
autocmd QuickFixCmdPost l* nested lwindow

默认情况下,:mak[e]会跳转到第一个错误,如果不想启用这个功能,请使用:make!。

代码折叠

代码较长时可启用代码折叠功能,如按语法高亮元素折叠:

set foldmethod=syntax
"默认情况下不折叠
set foldlevel=99

随后即可使用z系列命令管理代码折叠。如za会翻转当前位置的折叠状态,zA会递归翻转当前层所有代码的折叠状态等。当然也可以把功能键映射到za:

map <F3> za

查看文档

K 键可用于查看当前函数的文档。

其它插件

近来仍被积极维护的代码托管在 GitHub 上的插件[13]:

  1. Fugitive 让 Vim 更好地与 Git 整合。
  2. Powerline 炫丽实用的状态
  3. Tagbar 比 taglist 更现代的代码结构浏览工具
  4. The NERD tree 以树形结构浏览文件夹中的文件
  5. Syntastic 语法检查
  6. surround.vim 快速删除/修改光标周围配对的括号
    其它常用插件[14]:

Project
方便管理工程中的文件

snipmate.vim
在编辑中实现模板展开

a.vim
在.cpp/.h等文件对中跳转

matchit.zip
增强%的功能

winmanager
将文件管理窗口和taglist堆叠起来。

Vim 8.0 释出  http://www.linuxidc.com/Linux/2016-09/135178.htm

Linux下编译安装Vim8.0  http://www.linuxidc.com/Linux/2017-01/139210.htm

Vim学习指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

Vim编辑器配置 http://www.linuxidc.com/Linux/2016-09/135460.htm

Vim编辑器使用 http://www.linuxidc.com/Linux/2016-09/135043.htm

快速学会 Vi编辑器 http://www.linuxidc.com/Linux/2013-08/88586.htm

强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm

Linux文本编辑器Vim的一般用法  http://www.linuxidc.com/Linux/2016-11/137263.htm

把Vim打造成优秀的C++ IDE  http://www.linuxidc.com/Linux/2016-06/132262.htm

Ubuntu 14.04升级Vim7.4到8.0  http://www.linuxidc.com/Linux/2016-11/136816.htm

Vim安装youcompleteme自动补全插件  http://www.linuxidc.com/Linux/2016-11/137665.htm

Linux Vim编辑器使用简单讲解  http://www.linuxidc.com/Linux/2016-12/138930.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-01/139564.htm

vim 安装的更多相关文章

  1. vim安装不上

    前阵子,刚安装Ubuntu时,安装vim的问题,现在些出来分享一下.apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成有一些软件 ...

  2. 给VIM安装插件。让ubuntu的vim强大起来

    简易安装方法: 打开终端,执行下面的命令就自动安装好了: wget https://raw.github.com/ma6174/vim/master/setup.sh -O ma6174_vim_se ...

  3. Vim安装使用和配置

    卸载vim sudo apt-get remove --purge vim (--purge 是完全删除,会连配置文件一起删除) 也可以使用yum等其它方式安装 ,如果提示apt-get命令不存在可以 ...

  4. vim学习笔记(一)—— vim安装方法

    一.完全卸载vim的方法 sudo apt-get remove --purge vim (--purge 是完全删除,会连配置文件一起删除) 二.Vim前言——————“世界上只有三种编辑器,EMA ...

  5. vim安装 YCM 过程记录

    YCM(YouComplateMe) 属于Vim中大神级的插件,提供了类似于巨硬爸爸的VS中的代码补全,但是其安装方式也是比较复杂,因此特意写下一篇记录,记录下我自己如何安装这一插件的过程: 检查自己 ...

  6. vim安装bundle和使用

    一.准备工作 安装Git(因为下面我们选择的插件管理器需要使用到它)安装其他插件前首先需要选择一个Vim插件管理器,我这里选择的是Vundle,Vundle的工作过程中需要通过Git自动从远程创库同步 ...

  7. Vim 安装和配置、优化

    Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install ...

  8. Vim安装记录

    Vim安装记录 参考链接 安装命令 1. 安装依赖库 2. 下载最新vim源码 3. 删除旧版vim 4. 配置configure.编译.安装 5. 设置vim为默认编辑器 6. 必要的配置 Vim安 ...

  9. vim安装中文帮助手册

    安装方法:   在下面的网站下载中文帮助的文件包:$wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.5.0.tar. ...

随机推荐

  1. (二)给Centos配置网络以及使用xshell远程连接Centos

    好吧,我对网络协议以及ip配置知识的匮乏,让我在这里折腾了将近一天才搞定.可以说基本上网上遇到的问题我都遇到了.在这里,记下正确的步骤来给Centos配置网络.希望以后少走弯路. 首先我要说明的是,我 ...

  2. BZOJ5299:[CQOI2018]解锁屏幕(状压DP)

    Description 使用过Android手机的同学一定对手势解锁屏幕不陌生.Android的解锁屏幕由3x3个点组成,手指在屏幕上画一条 线将其中一些点连接起来,即可构成一个解锁图案.如下面三个例 ...

  3. 关于<meta>的各种用处以及移动端的常见问题

    1.优先使用最新版本的IE和Chrome <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1& ...

  4. Oracle死锁一例(ORA-00060),锁表导致的业务死锁问题

    1.问题发现 检查客户数据库的时候发现存在大量死锁的情况 Thread advanced to log sequence (LGWR switch) Current log# mem# : /orad ...

  5. 【模板】负环(spfa)

    题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...

  6. thinkphp 利用GD库在图片上写文字

    <?php /** * Created by PhpStorm. * User: Administrator */ namespace Home\Event; use \Think\Image; ...

  7. Zabbix——自动发现

    前提条件: Zabbix版本为4.0 固定网段寻找网络设备,并添加组.添加模板.添加proxy. 设置完毕,等待~~ 如果没有问题,将会直接出现在host中.

  8. 关于mybatis编写sql问题.

    最近呢楼主回到长沙进行面试:被问了一个这样的问题,在mybatis中怎么进行模糊查询,望各位大佬在下方进行评论,好让我这菜鸡多学习一些.

  9. 创建jq插件步骤

    无意看了这篇<jQuery插件开发精品教程,让你的jQuery提升一个台阶>文章,现在做一下总结. 一.jQuery插件的创建可以有三种方法 1.通过$.extend()来扩展jQuery ...

  10. jQuery 常用核心方法

    jQuery 常用核心方法 .each() 遍历一个jQuery对象,为每个匹配元素执行一个函数 $('p').each(function(idx,node){ $(node).text(idx + ...