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. SOJ1029 Humble Numbers (枚举)

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  2. Linux Shell 编程 文件转置问题

    给定一个文件 file.txt,转置它的内容. 你可以假设每行列数相同,并且每个字段由 ' ' 分隔. 示例: 假设 file.txt 文件内容如下: name age alice 21 ryan 3 ...

  3. 如何查看Windows下端口占用情况

    开始---->运行---->cmd,或者是window+R组合键,调出命令窗口  输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是49157,首 ...

  4. 二十一、IntelliJ IDEA 控制台输出中文乱码问题的解决方法

    首先,找到 IntelliJ IDEA 的安装目录,进入bin目录下,定位到idea.vmoptions文件,如下图所示: 双击打开idea.vmoptions文件,如下图所示: 然后,在其中追加-D ...

  5. PAT——1006. 换个格式输出整数

    1006. 换个格式输出整数 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们用字母B来表示“百” ...

  6. Faster Alternatives to glReadPixels and glTexImage2D in OpenGL ES

    In the development of Shou, I’ve been using GLSL with NEON to manipulate image rotation, scaling and ...

  7. 解决SVN UUID客户端和服务器不一致的问题

    下面是从别的文章中COPY过来的两篇文章,可以完美的解决这个问题: 一. 重新定位SVN的时候,遇到uuid不一致的问题. Google得知可以使用以下命令 有到svnadmin命令:(位于 SVN安 ...

  8. Nginx自定义模块编写:根据post参数路由到不同服务器

    Nginx自定义模块编写:根据post参数路由到不同服务器 2014-05-05 15:27 blogread IT技术博客 字号:T | T Nginx可以轻松实现根据不同的url 或者 get参数 ...

  9. ASP.Net 中的三种控件

    ---恢复内容开始--- 第一种:HTML控件 ASP.Net把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性.无法在服务器端进行处理. 比如: <input111 type=&quo ...

  10. 解决最新版 mac os sierra usb网卡不能使用的问题

    解决最新版 mac os sierra usb网卡不能使用的问题 解决最新版 mac os sierra usb网卡不能使用 无法使用未签名第三驱动的问题 我的情况是 mac os sierra 使用 ...