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

"为方便复制,用开启/关闭行号显示:

nnoremap :set nonumber!:set foldcolumn=0

启用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 pumvisible() ? "\" : "\"

"上下左右键的行为

inoremap pumvisible() ? "\" : "\"

inoremap pumvisible() ? "\" : "\"

inoremap pumvisible() ? "\\\" : "\"

inoremap pumvisible() ? "\\\" : "\"

如需自动补全,可安装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]:

"在普通和可视模式中,将与g互换

nnoremap g

vnoremap g

nnoremap g

vnoremap g

就地编译和错误处理

使用: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 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堆叠起来。

linux如何安装vi命令,Ubuntu 16.04 下 Vim安装及配置相关推荐

  1. Ubuntu 16.04 下 Vim安装

    默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrwxrwx 1 root root 17 ...

  2. Ubuntu 16.04下的LAMP环境配置

    在学习开发过程中,每当遇到新的问题时,通常都能在网上搜到解决的方法,但是网上的方法千千万,有些是已经过时了的,有些是跟自己开发环境不同的,总是不能第一时间能找到答案. 而当时遇到的问题可能在今后的开发 ...

  3. 在linux搭建wiki教程,在Ubuntu 16.04系统上安装WikkaWiki

    一.WikkaWiki介绍 WikkaWiki是一个灵活的.兼容标准的.轻量级的.平台独立的开源Wiki引擎,它使用PHP语言开发,后端存储采用了MySQL数据库.WikkaWiki的设计目标是速度快 ...

  4. ubuntu安装pr_在Ubuntu 16.04服务器上安装Zabbix 3.2

    监控服务器 - 什么是Zabbix Zabbix是企业级开源分布式监控服务器解决方案. 该软件监控网络的不同参数和服务器的完整性,还允许为任何事件配置基于电子邮件的警报. Zabbix根据存储在数据库 ...

  5. 大数据爬虫基础(三)Scrapy在ubuntu 16.04下的安装

    Scrapy ubuntu下安装 系统:ubuntu 16.04 no gui 依赖包及依赖包的依赖包: 下列的安装步骤假定您已经安装好下列程序: http://scrapy.org/ Python ...

  6. Linux如何卸载slurm,在Ubuntu 16.04桌面上安装/模拟SLURM:slurmd无法启动

    编辑 我真正想要的是一种模仿SLURM的方法,一种可以安装的交互式和合理用户友好的方式. 原帖 我想用SLURM测试一些最小的例子,我试图用Ubuntu 16.04在本地机器上安装它.我跟随the m ...

  7. linux升级安装失败,更新Ubuntu 16.04系统中安装Adobe Flash更新失败的解决

    最近在更新 Ubuntu 16.04系统的时候,发现总是在安装 Adobe Flash更新的时候失败,提示如下信息: 正在处理用于 update-notifier-common (3.168.5) 的 ...

  8. linux无线网卡连不上网,Ubuntu 16.04下无线网卡无法正常连网

    背景:无线网卡初次连接可以正常上网,但是用了一会儿就会出现无法上网的情况 版本: Ubuntu 16.04 一.分析: 1.使用ifconfig命令发现不会显示无线网卡,说明无线网卡被关闭,笔者输出的 ...

  9. linux卸载amd软件命令,Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

    1.apt 是Advanced Packaging Tool,是Ubuntu下的安装管理工具,大部分的软件安装/更新/卸载都是利用apt命令来实现的,直接在终端输入apt即可以查阅命令帮助信息 1.1 ...

最新文章

  1. 陪伴程序员的一条龙、一骑士 36 岁了!
  2. 如何培养自己奇特的创意设计思维?
  3. centos7设置密码策略_Linux系统设置复杂密码策略方法总结
  4. CRITICAL_SECTION 学习
  5. 分析:苹果招GPU工程师并不是打算放弃英特尔
  6. HRBP与HRM的区别是什么?
  7. [转]使用SCOM 2012监控网络
  8. maven仓库--私服(Nexus的配置使用)
  9. Android车载应用开发与分析(11)- 车载Android应用开发入门指南
  10. python面板数据模型操作步骤_面板数据模型估计一般要做哪些步骤?
  11. JS-Global对象
  12. Android私有数据存储,Android获取私有存储目录
  13. iPhone清理工具:4Easysoft iPhone Cleaner for Mac
  14. empyrical 模块的学习与分析 note4
  15. Deep Crossing
  16. 服务器芯片组 c242评测,完胜690!最详尽的C68G芯片组性能评测
  17. 看雪3万课程笔记-FRIDA高级API实用方法:Frida Hook Java(一)
  18. 关于babel配置使用可选链
  19. TB级别分布式关系型数据库OceanBase理论详解
  20. 立体图像——NCC匹配方法计算视差图

热门文章

  1. Pycharm安装包
  2. linux备份还原命令
  3. 项目建议书-在线书籍购物书
  4. 千军万马网盘下载器1.0
  5. 西安科技大学计算机院复试,2014年西安科技大学计算机学院考研复试细则
  6. python安装launcher要选吗_python launcher是什么
  7. 美丽天天秒源码部分核心源码分享
  8. canvas插件 fabric.js 使用
  9. java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.
  10. GitHub 标星 6