Ubuntu 16.04 Vim安装及配置
安装VIM
默认已经安装了VIM-tiny
acewu@acewu-computer:~$ 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]:
- Fugitive 让 Vim 更好地与 Git 整合。
- Powerline 炫丽实用的状态
- Tagbar 比 taglist 更现代的代码结构浏览工具
- The NERD tree 以树形结构浏览文件夹中的文件
- Syntastic 语法检查
- surround.vim 快速删除/修改光标周围配对的括号
其它常用插件[14]:
Project
方便管理工程中的文件
snipmate.vim
在编辑中实现模板展开
a.vim
在.cpp/.h等文件对中跳转
matchit.zip
增强%的功能
winmanager
将文件管理窗口和taglist堆叠起来。
相关文档
- 配置基于Vim的Python编程环境
- 让vim自动判断中文编码
参考资料
- How to setup VIM properly for editing Python files - *.py (StackOverflow)
- amix的vimrc
- Python and vim: Make your own IDE (2009.2)
- Python官网上的Vim介绍
- Git Tools - Submodules
- 细说 Vim 7 之新特性-LinuxToy
- VimTip 1228: Improve completion popup menu
- Vim文档
- Browsing programs with tags -- Vim Tips Wiki
- Vim and Ctags tips and tricks
- use :tjump instead of :tag vim on pressing ctrl-] (StackOverflow)
- Automatically open the quickfix window on :make
- LinuxTOY Xu Xiaodong 的VimEnv
- 手把手教你把Vim改装成一个IDE编程环境(图文)
Ubuntu 16.04 Vim安装及配置的更多相关文章
- Ubuntu 16.04 Vim安装及配置【转】
转自:http://www.cnblogs.com/ace-wu/p/6273031.html 安装VIM 默认已经安装了VIM-tiny acewu@acewu-computer:~$ locate ...
- Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器
如果大家已经在使用第三方邮件服务方案发送并收取邮件,则无需运行自己的邮件服务器.然而,如果大家管理一套云服务器,且其中安装的应用需要发送邮件通知,那么运行一套本地只发送SMTP服务器则更为理想. 如何 ...
- Ubuntu 16.04 Django安装和配置
之前有安装和配置过,换了台电脑,再安装和配置,忽然发现差不多都忘记了,这里记录下已备之后查阅. sudo apt-get install python-pip sudo apt-get install ...
- ubuntu 16.04 SS安装及配置
安装SS客户端 安装pip3 一般情况下,pip3安装的版本比pip安装的新,pip安装的版本比apt安装的新,这里选择最新版本. sudo apt install python3-pip 安装SS ...
- Ubuntu 16.04 LTS安装Eclipse配置Pydev
原材料: 下载 jdk-8u121-linux-x64.tar.gz 下载 eclipse-jee-neon-2-linux-gtk-x86_64.tar.gz 1.安装jdk sudo mkdir ...
- 如何在Ubuntu 16.04上安装配置Redis
如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...
- Ubuntu 16.04.5安装docker
一:安装Ubuntu 16.04.5 下载地址: 1.magnet:?xt=urn:btih:C3C5FE05C329AE51C6ECA464F6B30BA0A457B2CA 2.http://m ...
- Ubuntu 16.04上安装SkyEye及测试
说明一下,在Ubuntu 16.04上安装SkyEye方法不是原创,是来自互联网,仅供学习参考. 一.检查支持软件包 gcc,make,vim(optional),ssh,subversionbinu ...
- Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel
Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1.MySQL安装[安装 MariaDB]MariaDB是MySQL的一个分支首 ...
随机推荐
- 09-移动端开发教程-Sass入门
1. 引言 CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量.函数.循环.分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CSS编程的扩展语言(CSS4也 ...
- mysql数据库基本操作
下载地址 http://www.mysql.com/downloads/mysql/ 端口号:3306 用户名:root 密码:自定义 连接到MySQL服务器 >mysql -uroot -pr ...
- kubernetes进阶(03)kubernetes的namespace
服务发现与负载均衡Kubernetes在设计之初就充分考虑了针对容器的服务发现与负载均衡机制,提供了Service资源,并通过kube-proxy配合cloud provider来适应不同的应用场景. ...
- GIT入门笔记(20)- 使用eclipse 基于 git 开发过程梳理
一.创建本地分支 1.下载/更新 本地 主干 如果本地还没有 本地主干,下载:git clone 如果本地已有了 本地主干,更新:git pull 工程右键菜单:team -> pull 2.基 ...
- OAuth2.0学习(1-1)OAuth2.0是什么?
目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题 OAuth就是用于为第三方应用授权访问用户的资源应用的. 目前有OAuth1. ...
- linux centos6.8 下安装mysql 步骤
安装环境:vmware12.centos6.8.centos中配置阿里云数据元 1.下载mysql 运行: sudo yum -y install mysql-server 如果下载失败,可以卸载重新 ...
- 微信小程序授权获取用户详细信息openid
小程序获取用户的头像昵称openid之类 第一种使用wx.getUserInfo直接获取微信头像,昵称 wx.getUserInfo({ success: function (res) { that. ...
- python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块
一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...
- POJ1236【Tarjan+缩点】
题目大意:有向关系体现在电脑可以通过网络单向的传输文件,并规定一旦有电脑存在该文件,那么所有它能传输的电脑就能在第一时间得到这个文件,题目有两个问题,第一个是最少向网络中的几台电脑投放文件,能使得整个 ...
- jupyter notebook的架构
最近项目需要改写jupyter notebook的内核,由于内功不够,英语过差,读文档真的是心痛,然后各种搜索找到了一篇不错的讲解. 转自:http://blog.just4fun.site/jupy ...