Ubuntu下VIM的安装及其配置

一、Ubuntu系统默认内置:

https://www.cnblogs.com/mo-wang/p/4550859.html

实际上ubuntu默认没有安装老版本的vi,只装了vim。vi是vim.tiny(vim的最小化版本,不含 GUI,并且仅含有一小部分功能,并且默认与vi兼容。此软件包不依赖于vim-runtime软件包)的一个别名,可用命令ls -l /usr/bin/vi来进行查看vi是指向/etc/alternatives/vi,而/etc/alternatives/vi 又指向/usr/bin/vim.tiny,从命令update-alternatives --display vi可以看出默认情况下,vi当前指向的是vim.tiny。

二、VIM版本及其对比:

  不同的编译选项编译出来的vim而已。比如vim是终端下的vim-basic跟vim-tiny,而vim-gnome是用了GNOME2 GUI的vim,在gnome桌面系统上推荐安装vim-gnome。

1、vim-tiny是tiny 版本的vim,就是功能比较少(前面有个+的表示有着功能),但是体积小,速度快。

2、vim-basic:完整版的vim,不过同样没有图形界面,没有菜单

3、更多可以查看帮助文档:http://vimdoc.sourceforge.net/htmldoc/various.html#+feature-list

三、VIM安装:

默认已经安装了VIM-tiny,

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

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

sudo apt-get install vim-basic

安装完成后,发现系统会自动把默认的vi版本从tiny改成basic版本:

此时vim-basic已经安装完毕

现在系统有两个版本的VIM,可以如下命令查看:

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

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

已经添加到系统

查看版本

四、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],使得在多台电脑间同步插件及在本地更新插件变得十分便捷。

# 在存放配置文件的主文件夹下,添加一个 submodulegit 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添加块注释。

如有其它需求,也可考虑commentsEnhCommentify等插件。

缩进

使用自动缩进可能需要设置,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 autocmdautocmd QuickFixCmdPost [^l]* nested cwindowautocmd QuickFixCmdPost    l* nested lwindow

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

代码折叠

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

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

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

map <F3> za

查看文档

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

其它插件

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

其它常用插件[14]

相关文档

参考资料

  1.  How to setup VIM properly for editing Python files - *.py (StackOverflow)

  2.  amix的vimrc

  3.  Python and vim: Make your own IDE (2009.2)

  4.  Python官网上的Vim介绍

  5.  Git Tools - Submodules

  6.  细说 Vim 7 之新特性-LinuxToy

  7.  VimTip 1228: Improve completion popup menu

  8.  Vim文档

  9.  Browsing programs with tags -- Vim Tips Wiki

  10.  Vim and Ctags tips and tricks

  11.  use :tjump instead of :tag vim on pressing ctrl-] (StackOverflow)

  12.  Automatically open the quickfix window on :make

  13.  LinuxTOY Xu Xiaodong 的VimEnv

  14.  手把手教你把Vim改装成一个IDE编程环境(图文)

(0)

相关推荐

  • vim编辑使用

    目的 为什么写这个,为了总结一下vim编辑器的使用方法,命令,和过程,更有效的使用vim编辑器.同时,也可以帮助其他人和接触学习vim. 使用vim编辑器有一段时间了,坚持用vim编辑器是个了不起的事 ...

  • 【学员分享】程序员效率神器,最常用VIM插件安装大全

    相信大家多次被推荐用vim作为编辑程序,知道vim编辑有很多优点,但是vim初始界面太原始了,安装了之后只能用来编辑,如果要运行就需要退出去运行,麻烦死了.回想用现成的IDE是多么的舒服.但是为了更好 ...

  • Linux中VI的使用

    Vim/Vi 简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件,Vim/Vi 没有菜单,只有命令,www.vim.or ...

  • linux下vsftpd的安装及配置使用详细步骤

    安装 yum install vsftpd 新建/home/uftp目录作为用户主目录 mkdir /home/uftp 新建用户uftp: useradd -d /home/uftp -s /bin ...

  • ubuntu下conda+pytorch+opencv环境配置 | 大专栏

    在ubuntu系统上利用安装conda,pytorch,opencv,并结合rfb-net在voc2007和voc2012上完成测试.核心内容还是环境的配置,特别是解决环境配置中遇到的各种问题. 安装 ...

  • WSL(win下Liunx子系统安装+简易配置)

    先搜索这个 把这个打开 重启 在应用市场安装Ubuntu 20 我对这个空间和敏感,老是觉得不够用.这里的话就是再看看 按照推测应该是SDN在国内,快的很 打开code,自动提示 安装 启动 初始化中 ...

  • (9条消息) Ubuntu下OpenCV配置(VScode+cmake)

    近期为了做三维重建.开始了OpenCV学习之路.顺便记录一下. 前期准备 如题所述,本次是在Ubuntu下配置的.所以用到的各种软件如下所示: 1. cmake 直达链接: 2. VScode 直达链 ...

  • ubuntu下安装nginx时PCRE库、zlib库、OpenSSL库的安装

    Nginx是高度自由化的Web服务器,它的功能是由许多模块来支持.如果使用了某个模块,这个模块使用了一些类似zlib或OpenSSL等的第三方库,那么就必须先安装这些软件.Ubuntu下不像在cent ...

  • [博客更新]Linux 下安装并配置 Maven

    项目里用到 Maven 来构建和管理工程,之前一直是在 Windows 中使用 Maven 的,今天在 Ubuntu 18.04 系统中也安装了 Maven,本篇就记录一下安装的过程. Apache ...

  • Ubuntu下deb包的安装方法

    deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian Package的简写,是为Debian 专 ...

  • 在Ubuntu下安装单细胞3大R包

    查看Ubuntu系统以及R版本 cat /etc/issue 通常来说,很多R包的安装对R版本是有要求的,比如BiocManager需要 R (≥ 3.5.0),但是并不需要最新版R语言. R到3.5 ...

  • 在Ubuntu下安装旧版seurat

    演示如何配置单细胞数据处理环境. 先准备Ubuntu系统 这里首推华为云:https://www.huaweicloud.com/pricing.html#/ecs 可以和其它按需购买的云服务对比: ...