什么是Vim?

Vim 是经典的 UNIX 编辑器 Vi 的深度改良版本。它增加了许多功能,包括:多级撤销、格式高亮、命令行历史、在线帮助、拼写检查、文件名补完、块操作、脚本支持,等等。除了字符界面版本之外,它也有图形界面版本(比如 gVim)。虽然 Vi 还在继续维护当中,但是大部分人都只在使用 Vim 了,你所见到和听到的大多是指 Vim——虽然你的命令名可能是 Vi。

这个编辑器常用于程序员、系统管理员、黑客们进行编程和文本编辑。不像某些编辑器,它所有的命令都采用普通的键盘字符,因此在你的如飞般的十指之下,它的输入和操作速度非常快。当然,你也可以将功能键映射到某些命令上,甚至还可以支持鼠标。

除了 Linux 之外,Vim 还可以运行在 MS-Windows (NT、2000、XP、Vista、7、8、10)、苹果、VMS 和几乎所有的 UNIX 分支上。 Vim 的旧版本还可以运行在 MS-DOS、MS-Windows 95/98/Me、Amiga DOS、Atari MiNT、BeOS、RISC OS 和 OS/2 上,不过新版本不再支持了。

Vim主要更新

8.0 版本中除了大量的细节改进和错误修复以外,主要支持以下的新功能:

支持异步 I/O 和通道channel

Vim 现在可以和后台的其它进程进行消息交互。这样就可以开发一个运行在后台的服务器,并将结果发回给 Vim,这种交互方式称之为通道channel。在通道中使用 JSON 传递消息,因此你可以用任何一种语言来开发后台服务器,只需要它支持 JSON 即可。通过支持这种技术可以实现一些功能非常复杂的插件。

任务

Vim 现在也能启动一个任务,并与之通讯或停止它。比如说,可以启动一个用于自动补完、格式检查等功能的进程。在任务和 Vim 之间的通讯是通过通道完成的。

定时器

另外一个异步工作的是定时器timer,可以启动一个定时器并不断重复调用某个函数。比如:let tempTimer = timer_start(4000, 'CheckTemp') 。

Partial

Vim 已经有了一个 Funcref 功能,这是一个函数引用。partial 也是一个函数引用,但是它可以绑定参数或字典。这对于频道或定时器的回调很有用。 比如:let tempTimer = timer_start(4000, function('CheckTemp', ['out'])) 。

Lambda 和闭包

lambda 是创建函数最快的方式,比如:{args -> expr}。它对于 filter() 和 map() 很有用,而且还支持函数参数。如:call filter(mylist, {idx, val -> val > 20})。

lambda 可以使用定义 lambda 表达式范围内的变量,这常被称之为闭包closure。

插件包

插件越来越多了,为了更好的管理插件,因此支持了插件包的支持。

窗口 ID

以前 Vim 中的窗口只能通过数字编号来访问,当打开、关闭或移动窗口时,这个数字也随之而变。现在每个窗口都有了一个唯一的 ID,可以更方便的找到它们。

折行缩进

新增的 'breakindent' 选项可以保证在折行时维持缩进不变。

Windows:支持 DirectX

新增的 'renderoptions' 选项可以在 Windows 上切换到 DirectX (DirectWrite)引擎上。

支持 GTK+ 3

一般用户很难注意到 GTK+ 3 和 GTK+ 2 的区别。对这两者的配置仍然都支持。

Vim的UNIX/Linux版下载:

源代码及运行时文件: ftp://ftp.vim.org/pub/vim/unix/vim-8.0.tar.bz2

.tar.bz2编译安装

解压缩:tar jxf vim-8.0.tar.bz2
切换目录:cd /vim80/src
配置:./configure

注意:在配置过程(检查依赖关系)可能会碰到下面的问题:

no terminal library found
checking for tgetent()… configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with –with-tlib.

ncurses是一个比较老的库

解决方法:sudo apt install libncurses5-dev

编译:make
安装:make install

这样打开终端输入vim直接可以进入

Vim文档与帮助

对于初学者来说,有一个叫  vimtutor 的一小时教程可以看看(当然是英文的),请通过 :help tutor 了解更多信息。

学习 Vim 的最好方式之一是在 Vim 中使用:help,如果你还没有 Vim 二进制程序,你也可以看看 runtime/doc/help.txt,它包含了对其它文档的指引。这个用户手册就像一本书一样,推荐使用它来学习 Vim。详见 :help user-manual。

Linux下编译安装Vim8.0的更多相关文章

  1. Linux下编译安装mysql-5.0.45.tar.gz

    安装环境:VMware9(桥接模式) + Linux bogon 2.6.32-642.3.1.el6.x86_64(查看linux版本信息:uname -a) 先给出MySQL For Linux ...

  2. ubuntu16.04下编译安装vim8.1

    之前写过一篇centos7下编译安装vim8.0的教程,ubuntu16.04相比centos7下安装过程不同在于依赖包名字的不同,其余都是一样.下面给出ubuntu16.04编译安装vim8.0需要 ...

  3. linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  4. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  5. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  6. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  7. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  8. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  9. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

随机推荐

  1. WPF做12306验证码点击效果

    一.效果 和12306是一样的,运行一张图上点击多个位置,横线以上和左边框还有有边框位置不允许点击,点击按钮输出坐标集合,也就是12306登陆的时候,需要向后台传递的参数. 二.实现思路 1.获取验证 ...

  2. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  4. winform 窗体圆角设计

    网上看到的很多winform窗体圆角设计代码都比较累赘,这里分享一个少量代码就可以实现的圆角.主要运用了System.Drawing.Drawing2D. 效果图 代码如下. private void ...

  5. ionic第一坑——ion-slide-box坑(ion-slide分两页的坑)

    ionic.views.Slider = ionic.views.View.inherit({ initialize: function (options) { . . . function setu ...

  6. SqlServer简单数据分页

    手边开发的后端项目一直以来都用的.NET MVC框架,访问数据库使用其自带的EF CodeFirst模式,写存储过程的能力都快退化了 闲来无事,自己写了条分页存储过程,网上类似的文章多的是,这里只列了 ...

  7. angular中使用ngResource模块构建RESTful架构

    ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入 ...

  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 利用AOP写2PC框架(一)

    并不是很想写这个系列,因为这个2pc单独写一个小架构有点鸡肋.不过也不知道写什么了,先写了再说吧. 整个流程如下图: 关于AOP系列的文章很多,我这里也再重复造一下轮子. 首先,我们定义了一个IAop ...

  10. MongoDB Java Driver操作指南

    MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...