相信大家在使用各种各样强大的 IDE 写代码时都会注意到,代码中各种类型的关键字会用独特的颜色标记出来,然后形成一套语法高亮规则。这样不仅美观,而且方便代码的阅读。

而在上古神器 Vim 中,我们通常看到的是黑底白字,没有任何其它颜色。难道我们的 Vim 就这么枯燥乏味吗?当然不是,Vim 隐藏了非常多非常实用的功能与技巧,不是老司机根本就不知道。下面来详细介绍。

在开始之前,我们要先检查一下系统中是否安装了 Vim 编辑器。一般来说 Ubuntu 系统是默认自带的,没有的小伙伴请先自行安装。

$ sudo apt-get install vim

然后我们运行以下命令来查看安装好的 Vim 编辑器的版本。

$ vim -version

接下来,我们就可以为 Vim 编辑器添加配色方案。为了能看出效果,我们准备了一个名为 login.shbash 文件,它的内容如下:

login.sh

!/bin/bash

echo "Type your username"
read username
echo "Type your password"
read password

if [[ ( $username == "admin" && $password == "secret" ) ]]; then
echo "Authorized user"
else
echo "Unauthorized user"
fi

运行以下命令使用 Vim 编辑器打开该文件:

$ vim login.sh

2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 公众号「良许Linux」后台回复「资料」免费获取

启用/禁用语法高亮显示

有些发行版的 Vim 编辑器已经帮你默认启用语法高亮,而有些发行版却没有。如果没有默认打开语法高亮,那么我们就需要自行打开。

打开的方法其实也很简单。在 Vim 编辑器中打开 login.sh 文件后,按 ESC 键并键入 :syntax on ,语法高亮显示就打开了,非常方便。

同样,关闭语法高亮也很简单,只需按 ESC 键并键入 :syntax off 即可。

永久启用或禁用语法高亮显示

刚刚那种打开语法高亮的方法只是暂时性的,一旦当前文件关闭,下次打开文件就需要重新打开语法高亮。

如果想要永久启用或禁用语法高亮显示,就需要修改 .vimrc 文件。首先,我们使用 Vim 打开 .vimrc 文件。

$ sudo vim ~ / .vimrc

然后,在打开的文件中添加一句 syntax on 命令,代表永久启用语法高亮显示。最后再输入 :wq 保存并关闭文件。

如果想要永久禁用语法高亮,则添加 syntax off 命令即可。

改变配色方案

在默认情况下,打开语法高亮后 Vim 为你应用了一套默认的配色方案,而实际上 Vim 还有很多套配色方案可供我们使用,我们可以自行去修改。

安装 Vim 后,颜色方案文件位于 /usr/share/vim/vim*/colors/ 中。我们可以运行以下命令来查看 Vim 配色方案文件的列表。

$ ls -l /usr/share/vim/vim*/colors/

可以看出 Vim 为我们提供了非常多的配色方案,我们可以根据自己的需要自由选择。假设,我们有一个 hello.htmlhtml 文件,我们想要将它的的配色方案改为 morning 类型。

2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 公众号「良许Linux」后台回复「资料」免费获取

hello.html

<html>
<head>
<title> Welcome </title>
</head>
<body>
<p> Hello Everybody, Welcome to our site </p>
</body>
</html>

我们首先运行以下命令在 Vim 中打开这个 html 文件。

$ vim hello.html

ESC 并键入 :colorscheme morning ,这样我们就更改了文件当前的颜色方案。

应用新颜色方案后,效果如下图显示。但这种更改依然是暂时的,关闭编辑器后配色方案将被重置。

如果想要永久设置特定的配色方案及背景,那么我们需要再次打开 .vimrc 文件并添加以下命令文本。下面配置的是夜晚配色方案,会将背景颜色设置为深色。

color evening
set background=dark

之后再重新打开刚才的文件,效果就会变成如下图所示。

根据语言选择配色方案

Vim 编辑器支持多种语言的语法,例如 PHP,Perl,Python,awk 等。根据不同语言,它会应用一套相应语言的配色方案。

比如现在有一个名为 average.py 的 Python 文件,我们用 Vim 编辑器打开它。通过 Vim 编辑器的默认配色方案,文件的显示效果如下图所示。

这是一个 Python 文件,但如果我们想以 Perl 的语法风格来显示,要怎么操作?我们只需输入 :set syntax=perl ,按 Enter 键就可以了,效果如下图所示。

:set syntax=perl

2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 公众号「良许Linux」后台回复「资料」免费获取

自定义配色方案

前面所介绍的那些配色方案,其实都是系统自带的,我们只是选择一下而已。如果我们想要个性化一点,自定义一套配色方案,要怎么操作?强大的 Vim 也是支持你这个需求的!

一般而言,语法需要高亮的无非就是 **变量、注释、常量 **之类的,Vim 编辑器支持的语法高亮组有如下 9 个:

Group Name Description
Identifier 变量
Statement 关键字,例如 if,else,do,while等
Comment 注释
Type 数据类型,如 int、double、string等
PreProc 预处理器语句,比如 #include
Constant 常量,如数字、带引号的字符串、真/假等
Special 特殊符号,如“\t”、“\n”等
Underlined 带下划线的文本
Error 错误

下面举个例子。在 Vim 编辑器中打开名为 leap.py 的 Python 脚本文件。默认情况下,该文件的语法高亮显示如下图所示。

如果我们想把关键字变为红色,该怎么操作?只需输入 :hi Statement ctermfg=red 即可。这时,ifelse 的颜色将变为红色。

:hi Statement ctermfg=red

当然,对于注释、常量、数据类型,我们也可以使用同样的方法来改变颜色。这样一来,你就会形成一套自己的配色方案,感觉是不是很酸爽?

看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创作的最大动力!

  1. 关注原创公众号「良许Linux」,第一时间获取最新Linux干货!
  2. 公众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提升、简历等资料。
  3. 关注我的博客:lxlinux.net

谁说 Vim 不好用?送你一个五彩斑斓的编辑器!的更多相关文章

  1. [译] 通过 contentEditable 属性创建一个所见即所得的编辑器(富文本编辑器)

    译者注 这只是一篇入门教程,介绍了一些基础知识,仅供参考,切不可因此觉得富文本编辑器很简单. 创建富文本编辑器是一个非常复杂的工程,需要考虑到方方面面,也有很多坑(请参考原文第一条评论). 为免误导大 ...

  2. 使用 TypeScript,React,ANTLR 和 Monaco Editor 创建一个自定义 Web 编辑器(二)

    译文来源 欢迎阅读如何使用 TypeScript, React, ANTLR4, Monaco Editor 创建一个自定义 Web 编辑器系列的第二章节, 在这之前建议您阅读使用 TypeScrip ...

  3. 用Scratch2.0源码定制一个自己的编辑器

    用Scratch2.0源码定制一个自己的编辑器,换成自己的软件名称和图标,添加中文字体,修复汉化错误等等1.准备:下载Scratch2.0源码.安装开发工具Adobe Flash Builder4.7 ...

  4. 让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示

    让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示 如果你已经阅读了简介,相信你已经对我们接下来要做的事情有所了解. 本文,将会把简介中基础程序修改为一个窗体应用程序.并对编辑器接下来的编辑 ...

  5. Vim安装jedi-vim提示的一个错误

    (仅为了提醒自己) 第一次的安装方法好像是通过 bundle安装的,好像是通过这个安装的并不是最新的版本,然后删除了通过下面的方法,最重要的是要执行 git submodule update --in ...

  6. 抓到Dubbo异步调用的小BUG,再送你一个贡献开源代码的机会

    hello,大家好呀,我是小楼. 最近一个技术群有同学at我,问我是否熟悉Dubbo,这我熟啊~ 他说遇到了一个Dubbo异步调用的问题,怀疑是个BUG,提到BUG我可就不困了,说不定可以水,哦不.. ...

  7. [JZOJ5511] 送你一个DAG

    题目描述: 给出一个 \(n\) 个点 \(m\) 条边的 \(DAG\) 和参数 \(k\). 定义一条经过 \(l\) 条边的路径的权值为 \(l^k\). 对于 \(i = 1-n\), 求出所 ...

  8. Python You-Get (送你一个免广告的视频和音乐网站 VIP)

    You-get可以在仅仅提供URL情况下就可以实现下载视频.图片.音乐等信息.也可以通过播放器在线观看视频或听音乐,重要的是再也不用烦恼弹出的广告了,如果你想观看视频,但又不想观看广告,并且你还想把视 ...

  9. 送你一个Python 数据排序的好方法

    摘要:学习 Pandas排序方法是开始或练习使用 Python进行基本数据分析的好方法.最常见的数据分析是使用电子表格.SQL或pandas 完成的.使用 Pandas 的一大优点是它可以处理大量数据 ...

随机推荐

  1. 滑动窗口-Moving Stones Until Consecutive II

    2020-02-20 16:34:16 问题描述: 问题求解: public int[] numMovesStonesII(int[] stones) { int n = stones.length; ...

  2. Android之练习MVVM+DataBinding框架模式

    最近简单学习了MVVM框架,记录一下. 结果演示: 分析其功能在不同框架下的构成: 无框架 可以明显感受到在无框架下,虽然一个单独的Activity即可实现功能,但其负担过重,代码复查时繁琐,一旦需要 ...

  3. C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  4. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(一)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 在机器学习中,离散化(Discretiza ...

  5. coding++:Spring Boot 全局事务解释及使用(二)

    什么是全局事务: Spring Boot(Spring) 事务是通过 aop(aop相关术语:通知(Advice).连接点(Joinpoint).切入点(Pointcut).切面(Aspect).目标 ...

  6. war 和 war exploded

    IDEA 开发项目时,部署 tomcat 的 Deployment 选项出现: war 模式 可以称之为发布模式.先将 WEB 工程打成 war 包,然后再将其上传到服务器进行发布. war expl ...

  7. centos7中安装mysql

    centos7中安装mysql网上已经很多资源了,我就不在赘述了.我这里只是记录下我安装的时候出现的一些问题. 原文:https://www.cnblogs.com/bigbrotherer/p/72 ...

  8. Java面试金典

    1,将构造函数声明为私有的作用 构造函数私有化,保证类以外的地方不能直接实例化该类,这种情况下,要创建这个类的实例,只能提供一个公共静态方法,像工厂方法模式,由于构造函数私有化,不能被继承. 2,在t ...

  9. 用css3实现摩天轮旋转的动画效果

    用css3实现摩天轮旋转的动画效果 1.CSS3 @keyframes 规则如需在 CSS3 中创建动画,您需要学习 @keyframes 规则.@keyframes 规则用于创建动画.在 @keyf ...

  10. 万物互联—MQTT协议

    一.简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),最早是1999年由IBM开发的基于发布/订阅范式的消息协议,是一种极其简单和轻量级的消息 ...