Vim 的哲学(三)

若是没有挑战,人生将多么无趣!html

两种副本

在个人硬盘上老是保留着(至少)两份 Vim 的配置文件。其中一份是所谓“彻底正式版”,它的文件名是 .vimrc,到本系列结束的时候,咱们将了解其中绝大部分的内容,而且它的内容也是会随时更新的(根据使用者的偏好和须要)。而另一份则是被我称之为“基础练习版”,它的文件名是 .vimrc.basic,其内容就是本文将要一一介绍的内容。git

不过在开始介绍具体内容以前我有必要解释一下我为何保留两份配置文件,以及我如何使用它们。程序员

我认为,只有在不依赖插件以及本身不了解的配置的前提下还可以毫无障碍的使用 Vim,而且在任什么时候候都能以多种方式高效率的操做,才算是真的会用 Vim。插件、键位映射、技巧性的配置等等都是锦上添花,它们有助于你进一步提升效率以及个性化你的工做环境,可是对于 Vim 哲学的理解帮助甚少。github

还有一个缘由是,我常常不得不面对不少没有配置的基础环境,好比新安装的服务器等。此时没有我惯用的环境和配置帮助我,我不想让本身感受到束手束脚,我但愿我能够不须要依赖插件和高级配置就能流畅高效的工做。shell

.vimrc.basic 的存在就是出于以上的缘由,它只有不多的一些配置项,而且不会更改 Vim 的一切默认操做行为;它打开了一些基础的交互反馈,关闭了缺省存在的一些恼人的设置,使得 Vim 的行为更加友好。这些设置的基础来自 Vim Golf,它的口号颇有意思:编程

Real Vim ninjas count every keystroke - do you?
“真的 Vim 忍者计算每一次敲键-你呢?”vim

Vim Golf 是这么玩的:每个用户能够提交本身的挑战,挑战的内容就是要求参赛者使用 Vim 完成指定的操做,操做所使用的敲键次数越少,排名就越高。固然为了保证公平,每一位参赛者都须要使用一份如出一辙的配置文件,因而Vim Golf 为你们提供了这样一份文件。此时此刻我并非要让你去参加 Vim Golf 的挑战,只是这些挑战的内容和参与条件都体现着我想要表达的 Vim 的哲学,即“保持简单”,我认为 Vim Golf 提供的这个基础配置很是有助于每一位 Vim 用户真正的掌握 Vim 操做的精髓。不过,我在本文里介绍的配置并不是和和 Vim Golf 提供的配置如出一辙,由于我使用它们的目标不是为了参赛,而是为了锻炼本身。实际上,我还有一份专门用来参加 Vim Golf 挑战的配置文件,叫作 .vimrc.golfsegmentfault

在平常的工做当中,我常常切换到这个配置环境下,离开全部的插件、键位映射、宏等辅助手段,只使用 Vim 自身提供的操做来干活。这是一种挑战,我乐在其中,而且在这个过程我受益不浅。我喜欢把这两套配置看作是两种难度的副本,普通副本只是为了我完成平常任务,因此它要尽量简化、高效,下降个人操做难度。而精英副本则是为了锻炼个人操做,因此它抛弃一切辅助手段,提升“战斗”的难度,固然收获的经验值也是杠杠的。插件或其余辅助手段能够帮助你简化不少事情,可是没了它们以后你是否还有办法准确高效的完成它们呢?只有在这样的环境下,你才会意识到这些状况,从而迫使你去学习和练习,去寻找答案,不断地强化你自身的能力,逐步达到高手的境界。浏览器

你没必要照搬个人方法来锻炼本身,不过不管怎样你至少也得有一份 .vimrc 吧?因此不管你是否喜欢我这样的锻炼方法,这份基础文件都应该成为你的 .vimrc 配置文件的基石。许多人拼拼凑凑出各类各样的 .vimrc,但他们中的绝大多数都不会从无到有本身写出一份漂亮的配置文件来。缘由在于 Vim 的配置多如牛毛,罕有人乐意把它们一一吃透,因此集众家之所长炮制一份大杂烩也不失为一个办法,不过你真的不但愿能彻底掌控本身的环境配置吗?服务器

Now, Let's Go.

基础环境配置

接下来我将带你一行行完成一个最基础的环境配置,此后咱们的旅程也将会以此为起点。随着时间的推移,你了解的愈来愈多,这份配置文件也将会愈来愈丰富,最终你会获得一个接近完美的环境配置(符合你的需求),而且你能够随时作出相应得调整,由于你对它们已经了如指掌了。

在跟随本章内容的时候,你没必要非得使用 Vim 不可,由于咱们尚未介绍更多的操做指令。你可使用任何一种你熟悉的编辑器来编辑和保存这些基础配置,到最后再打开 Vim 来验证它是否生效便可。

如何获取帮助?

在学习的过程当中,我没有办法作到面面俱到,滴水不漏。有时候你须要进一步的帮助,这就须要你学会查看 Vim 的帮助文档。

Vim 内置有一套完整全面的用户手册和帮助文档,我必需要说这是我见过的最棒的文档!使用这套文档也很简单,只要在常规模式下输入 :help 便可。: 将会带你进入命令模式,这是咱们讲到的第三种模式,之后咱们还会进一步了解它;help 是打开帮助文档的命令。

为了进一步帮助你方便的阅读帮助文档,我先简单介绍几条操做指令。若是你不熟悉它们没关系,阅读帮助文档正好是帮助你去掌握它们的好机会。

操做指令 功能描述 附注
h 光标左移
j 光标下移
k 光标上移
l 光标右移 能够用数字做为前缀实现屡次移动。好比 3j 能够向下移动三次
CTRL-U 向上翻半页 u = upwards
CTRL-D 向下翻半页 d = downwards
CTRL-B 向上翻半页 b = backwards = upwards
CTRL-F 向下翻半页 f = forwards = downwards

有这些指令打基础,阅读帮助文档应该不在话下了,而且这些指令在从此的平常操做中还会常用,请借助阅读帮助的机会多多练习,让它们成为你的下意识反应。另外,你会在帮助文档中看到一些高亮的词组,它们是能够跳转到对应的章节去的,就好像网页上的连接同样。跳转的方法是将光标移动到高亮处而后按下 CTRL-],以后你还能够按 CTRL-O 返回以前的页面(能够连续返回多级),或者用 CTRL-I 前进至刚才返回过的页面,就好像浏览器上的“后退”和“前进”按钮(对应的按键还有一对:CTRL-T<TAB>)。另外,你能够输入 :ju[mps] 打开一个跳转历史列表,看到都有哪些位置可供跳转。

你是否注意到 :ju[mps] 这个古怪的写法?它的意思是 jumps 是一个命令的全称,可是在输入命令时可使用其简写部分,也就是在 [] 以外的部分。所以在这个例子里,输入 :jumps 和 输入 :ju 是等价的。你应该了解这个细节,由于在帮助文档里会不断地出现,记住那些经常使用的简写会帮助你在平时提升效率。

另外,考虑到不少人阅读英文有困难,如下是一些中文版 Vim 手册的信息:

  1. 中文文档在线阅读版
  2. 中文文档下载安装版 下载安装可让你 Vim 里直接查看中文文档,可是安装和设置对新手略有难度(安装说明),在线版内容是同样的。Vim Documentation in Chinese
  3. Github Fork 若是你使用插件管理器,好比 Vundle,这个会更方便。

接下来每个小标题的后面都有对应的帮助命令,你可使用上述途径获取更多相关知识。

compatible :help 'compatible'

Vim 是 Vi 的改进版本,它在 Vi 的基础上作出了许多改进和加强,其中一些变化完全改变了 Vi 的特性。为了向后兼容适应一些老 Vi 用户的习惯,Vim 在默认状况下没有开启这类变化,换句话说 Vim 默认运行在“兼容模式”(Compatible)下。然而对于现代的绝大多数用户来讲,这些改进的变化更符合人们的指望,所以咱们须要让 Vim 运行在彻底模式下,开启那些覆盖了 Vi 的功能改进。你能够在帮助文档里看到对于这类改进的具体描述。

另外,不少设置和插件依赖于 Vim 的这些改进,因此咱们须要在配置的最开始关闭兼容模式,所以咱们在配置文件的顶部写下咱们的第一行:

set nocompatible

compatible 是布尔型的选项。VimScript(Vim 内置的脚本语言)在选项的前面加上 no 来表明关闭状态(falsy),此外在后面附加 ! 表明切换状态,即:若是当前状态是开启,那就关闭它,反之则开启它。关于 VimScript,从此咱们会进一步介绍,你也能够自行阅读一部很是好的在线教材:Learn Vimscript the Hard Way (by Steve Losh)

t_RV :help 't_RV'

这个选项在现今绝大多数的系统及 Vim 版本下都没有设置的必要,实际上它是一个遗留问题(Legacy Issue),对于它引发的问题及缘由的解释将会是很是冗长及乏味的,而它之因此出如今 Vim Golf 的默认设置里也是由于参与的人实在太普遍了,不免会有人碰到这个问题,因此你能够无视它,不过即便加上也不会对你有什么损失。

若是你真的好奇,那么请看这里:http://bugs.debian.org/608242

set t_RV=

runtimepath :help 'runtimepath'

set runtimepath=$VIMRUNTIME 会关闭用户自定义的脚本,这也是为了给你一个纯粹的、干净的 Vim 环境。

你会发如今我给出的配置文件中,这一句被我注释掉了,这是由于我是用 Vundle 来管理全部的第三方插件和脚本,所以我不须要这一句。可是若是你是手动管理的,那么你最好加上这一句。

syntax :help syntax

syntax on 为你开启语法高亮。或许称为“词法高亮”更加贴切,由于 Vim 并不去分析文件的语法,为了保证快速的解析,Vim 使用特定的语法来匹配词法规则并为它们着色。你能够自定义各类语言的语法高亮,无非就是根据这些规则来指定颜色罢了。

filetype :help 'filetype'

filetype on 为你开启文件类型检测,这个功能过重要了,全部的语法检测、高亮、缩进规则都依赖文件类型的识别。Vim 一般使用后缀名来识别文件的类型,可是你也能够从新指定或者经过在文件内容中添加特定标记来覆盖默认的检测结果。

filetype indent :help 'filetype-indent'

filetype indent on 开启缩进规则,在文件类型检测生效后,可用的缩进规则将会被使用。实际上还有一个重要的 filetype plugin on,顾名思义,这是开启对应插件的。可是还记得开始我说的话么?这套基础配置就是要摆脱对插件的依赖从而保持简单,所以咱们只开启缩进规则就够了。

backup :help 'backup'

backup 用来控制咱们是否为当前正在编辑的文件创建备份,在基础配置里咱们将备份功能关闭了。实际上我本身是打开的,由于有备而无患嘛。可是我真实的设置远不止这么简单,由于 Vim 关于文件备份的设置其实很是复杂(固然也很是灵活),简单的开启 backup 并不必定会如你指望的那样进行备份,而且在不少状况下还会让新手感到无所适从。我不想让你被这些问题吓跑,鉴于你在练习阶段也不会用 Vim 来作一些很是重要的编辑工做,因此请你关了它。

set nobackup

visualbell & t_vb :help 'visualbell' :help 't_vb'

可视化响铃是为听觉障碍人士提供可视化提示的功能,若是你不属于这类人群,你能够关掉它。可是即便如此,大多数人也不想看到屏幕闪烁的提示(通常在终端下发生操做错误的时候,会有屏幕闪烁的提示),因此你会看到下面这个看起来互相矛盾的两条设置,不过请你相信我,我没写错。

set novisualbell
set visualbell t_vb=

ruler :help 'ruler'

在屏幕下方显示标尺,默认状况下它会在右边显示光标所在位置的行号和列号。标尺的做用很是大,多数 Vimer 都喜欢自定义标尺的信息显示来知足本身的要求,不过这是一个很大的话题,咱们留着之后讲。目前为止,默认的标尺就已经够用了。

set ruler

number :help 'number'

number 打开屏幕左侧的行号显示,这个对程序员比较重要。

relativenumber :help 'relativenumber'

relativenumber 能够将行号变成相对于当前行的方式来显示,当前行为 0,上方是从 1 开始的正整数,下方是从 -1 开始的负整数。这有什么用呢?它能够帮你快速的精肯定位距离当前行的偏移数。见下图就明白了:

number & relativenumber

看,当前行是第 27 行,若是我想去 set ruler,我就敲 14k;若是我想去 colorscheme grb256,我就敲 8j,方便吧?

“等一下!你说当前行是 0 啊,为何上图会显示绝对行数呢?”

哦,那是由于我同时开启了 numberrelativenumber,这两个布尔型选项两两组合能够产生总计四种行号设置:

  1. set nonu nornu:不显示行号
  2. set nu nornu:显示绝对行号
  3. set nonu rnu:显示相对行号(当前行为 0)
  4. set nu rnu:显示相对行号(当前行为绝对行号)

猜猜看,我平时喜欢哪一种组合?

showcmd :help 'showcmd'

在屏幕右下角显示未完成的指令输入。有时候咱们输入的命令不是当即生效的,它会稍做等待,等候你是否输入某种组合指令。好比说你想向下移动 7 行,当你按下 7 的时候,你会看到屏幕右下角显示 7,此时 Vim 并不清楚你最终要作什么,因此它在这里提示你以前的指令而后等待你的下一步操做。

不是全部人都会注意到这里显示的不只仅是常规模式下的指令输入,它还会显示可视模式下你的选择状况,好比当前选择了多少字符,多少行,或者区块可视模式下的行数x列数。

set showcmd

showmode :help 'showmode'

在左下角显示当前的模式名称,没有显示则表明如今是常规模式。

set showmode

scrolloff :help 'scrolloff'

这个选项可让你设定在上下移动光标时,光标的上方或下方至少会保留显示的行数。好比说咱们设置它的值为 5,那么你向上或向下移动到屏幕接近边缘还剩 5 行的时候屏幕就会开始滚动。也就是说当你滚动屏幕时,你的光标距离屏幕上下两边将保留至少 5 行的高度,这个设定至关有用,多多尝试找到一个让本身最舒服的值。

set scrolloff=3

backspace :help 'backspace'

这个选项的推荐设置是这样的:

set backspace=indent,eol,start

indenteolstart 表明的意思是“缩进位置”,“行结束符”,“段首”。这样设置可使得 backspace 键在这三个特殊的位置也能进行回删动做。这比较符合咱们的指望,很奇怪 Vim 默认居然不容许在这些地方使用 backspace 吧?

showmatch :help 'showmatch'

打开此选项使得你在输入成对的括号时,Vim 会帮助你跳转并高亮一下匹配的括号(而后回到你正在输入的位置。这个效果很人性化,你只要亲自试一下就能体会到了。

set showmatch

matchtime :help 'matchtime'

虽然 showmatch 选项很是人性化,可是 Vim 默认的效果时间太长了,500ms!像我这种把行云流水的输入看得异常重要的人来讲简直是一种折磨。要当心的是,这个选项接受的值不是 ms 而是奇葩的 1/10 秒,好比说我想要 100ms,那么就是:

set matchtime=1

设置为 0 能够禁止跳转(高亮还在)。

hlsearch :help 'hlsearch'

打开搜索高亮模式,若搜索找到匹配项就高亮显示全部匹配项。

set hlsearch

incsearch :help 'incsearch'

打开增量搜索模式,Vim 会即时匹配你当前输入的内容,这样会给你更好的搜索反馈,不过你仍是要在最后输入 <CR>(回车)来确认你的搜索内容的。

set incsearch

ignorecase :help 'ignorecase'

搜索时忽略大小写。不过你能够用 \C 标识临时开启大小写敏感模式,这个涉及到 Vim 的正则用法,咱们之后再讲。

set ignorecase

smartcase :help 'smartcase'

此选项的开启会让搜索模式更加聪明。若是搜索时输入了任何大写字母,那么 Vim 会进行严格地大小写匹配;若是搜索时只输入小写并开启了 ignorecase,那么 Vim 就忽略大小写匹配(因此有大写也会找到)。

set smartcase

expandtab :help 'expandtab'

<TAB> 符号转变为 <SPACE>,也就是空格。这个对于现代程序员来讲很是重要——谁还用 <TAB> 缩进来着?

set expandtab

smarttab :help 'smarttab'

smarttab 要和后面的 shiftwidth 配合来用,它只做用于行首位置。当 smarttab 开启时,在行首键入 <TAB> 会填充 shiftwidth 设定的数值,在其余地方则填充 tabstop 设定的数值;当 smarttab 关闭时,不管在哪里键入 <TAB>,都会填充 tabstop 设定的数值。

因此,若是开启 smarttab,而后 shiftwidthtabstop 设定不同的数值,好比一个是 8 一个是 4,那么在行首键入 <TAB> 会产生 8 个字符的空白,而在其余地方键入 <TAB> 则产生 4 个字符的空白。这经常用来控制 Continuation Indent 的行为,有时也叫作 Indentation for Wrapped Lines 或者 Wrapped Line Indentation

set smarttab

autoindent :help 'autoindent'

打开自动缩进,我想这个没有人会不开的吧?不过要注意的是缩进的效果会受 smartindent 的影响。

set autoindent

smartindent :help 'smartindent'

为缩进行为采用相似 C 语言的风格,主要适用于拥有块级做用于的编程语言,不过这也不是绝对的,好比如今的 Javascript 不带块级做用域(ES6 就有了),可是它用大括号,因此自动缩进也表现的很好。此外还会对注释行/块应用恰当的缩进格式。

然而,Vim 的自动缩进实际上是至关复杂但也至关灵活的。smartindent 虽然说适用于相似于 C 语言风格的编程语言,可是对于 C 自己,Vim 还有内置一套更灵活的缩进方案。若是你常常编写 C 程序,你应该仔细看一下::help 'cindent'

此外,为了更好的适应各类语言的特性,Vim 也容许用户自定义缩进表达式,详情请见::help 'indent'

set smartindent

shiftwidth :help 'shiftwidth'

shiftwidth 实际上定义了每一次缩进对应的空格数,当你使用自动格式化(好比 gq),或者手动缩进(<<>>)时,Vim 使用的数值就是这个。

然而让人纠结的是,若是你还想要 Continueation Indent(见上面的 smarttab),你不得不把 shiftwidth 设定为你不想要的数字(由于 CI 一般比常规的缩进要大),可恰恰缩进步长又依赖这个,因此很难完美的实现全部的自动缩进格式设置。

不要被个人描述搞怕怕了,实际上如今不多有人在意 CI 了,多数语言的风格标准也不在 CI 的设置上作出约定,因此你尽管把 shiftwidth 设定成和 tabstop 同样的数值好了。

set shiftwidth=2

tabstop :help 'tabstop'

tabstop 就是 <TAB> 字符所表明的空格数,通常咱们会用 expandtab<TAB> 转变成空格符,而后键入 <TAB> 时就会产生 tabstop 个空格了。这是如今广泛的作法。

set tabstop=2

softtabstop :help 'softtabstop'

softtabstop 会影响 <BS> 删除的空格数,但不是用 <SPACE> 插入的空格,而是 <TAB> 插入的空格。因此咱们老是把 softtabstop 设定成和 tabstop 同样的数值,这样不管是用 <TAB> 插入缩进仍是用 <BS> 删除缩进,其行为老是同样的。

可是对于使用 <SPACE> 输入的空格,哪怕是连续输入的若干个空格,<BS> 仍是会一个一个的删除。

set softtabstop=2

list & listchars :help 'list' :help 'listchars'

list 开启对于制表符(tab)、行尾空格符(trail)、行结束符(eol)等等特殊符号的回显,有助于你观察这些特殊符号的状态,精确地控制文本的编辑。

这对于程序员,特别是精(吹)益(毛)求(求)精(疵)的程序员来讲相当重要,若是你是,你懂的!

listchars 能让你进一步控制想要用什么字符来显示这些特殊符号,若是你设定了 encodingUTF-8,那么你可使用不少很好看的字符。顺便一提,我没有设置 encoding 是由于 Vim 能够自动检测系统的 locale,这一点对于 Windows 用户多是废的(或者应该说 Windows 是废的……),因此请自行设置它。

set list listchars=eol:¬,tab:▸\ ,trail:.,

我给出的设置效果以下图所示:

listchars

你能够清楚的看到在 17,18,19 这三行故意输入的 <TAB>trailing <SPACE> 在屏幕中留下的标记。

Keep it simple...

我秉持着保持简单的精神为你总结出这些最基础也是最有用的设置,真心但愿能帮助你开一个好头。可是保持简单可不是为了让你简单的照抄了事呀,就这么短短二十来个设置选项,我足足花了一下午把它们整理并解释出来,而看一遍文档也不过就是二十分钟的功夫。因此我但愿你在应用它们以前仍是看一下文档里的说明吧,毕竟这些设置是要一直陪着你的。

然而,另一个顾虑是担忧你火烧眉毛的把看到的设置通通都加上,个人建议是慢慢来。由于不少设置都有反作用,尽管这些反作用实际上都在文档里有说明,但查找文档是辛苦活儿,这一点我心知肚明。当一次性应用不少设置的时候,你总会有摸不着头脑的时候,到了那时再去一个一个排查更是吃力不讨好的苦差事。

我开始认真学习 Vim 并计划写出一个完整的属于我本身的配置文件的时候,就没打算尽一日之力而克尽其功。前先后后大约花费了 8 周的时间,几乎天天腾出 10 分钟左右来吃透一些操做和选项,设置它们,而后利用一天里剩余的时间尽量的联系它们,看看是否有奇怪的地方。而后把它们提交到版本库进行追踪。这其实没有多辛苦,可是保持一个稳定的节奏,每一次都保持简单,最终得到的成效是喜人了。比之过去用了一年半穷尽折腾最终却一事无成,孰优孰劣我想这个结论都能很轻易的得出吧?

最后,我把完成的基础配置代码附在文后……而且因为 SegmentFault 蛋疼的语法高亮不认识 Vimscript,因此我又另外附上 Gist 的地址——别复制粘贴,这是练习 Vim 的好机会,我相信你!至于最后几行我没有讲到的设置,它们都是用来设置配色主题的,我简要说明一下:

设置选项 功能描述 附注
background 配色主题的色系 注意,这不是什么背景色!dark 是暗色系,light 是亮色系。
colorscheme 配色主题的名称 grb256 是我偏心的配色主题,但不是 Vim 自带的,因此你照抄的话必定报错。默认自带的主题也很少,你能够在输入 :colo[rscheme] 而后敲 <TAB> 自动补全而后本身试,推荐 elfloadpablo 这俩都不错。
highlight 自定义主题高亮颜色 若是选择主题有个别地方不尽如人意(常有的事儿),你能够本身改写或添加更多细节。详情请见::help syntax

记得这些设置是可有可无的,你搞不定也没有关系,反正之后还会讲的……

还要记得即便你发现配置选项有简写,也不要在配置文件里用简写,不然你回头查看时总有你想不起来的时候,到时候别怪我没有提醒你噢!(其实这是教训T_T)

噢!我好像忘了告诉你如何保存和使用

打开、保存和退出

.vimrc 文件放置在当前用户的根路径下,Unix & Linux 系的系统均可以用 cd ~ 进入这个路径。以后输入 vim .vimrc 便可打开(若是没有会帮你建立一个)。

在编辑的过程当中,键入 :w[rite] 而后回车就保存了,若是你已经创建起了初步的节奏,你不会遇到什么问题;可是若是你老是在屏幕上看见 :w...,兄弟,你又忘记返回常规模式了吧?

若是你直接打开了 Vim,忘记了跟文件名,那么你能够 :w[rite] .vimrc 来建立并保存。

退出也很简单,键入命令::q[uit] 便可,另外你还能够键入 :wq 连保存带退出,后者有一个对应的快捷键:ZZ,记住它,这是效率帮手。若是你不想保存只想退出,键入命令::q!,对应快捷键:我不告诉你,本身去查~(这不是我傲娇,而是由于我以为习惯这个快捷键很差,容易丢失修改,q! 命令虽然稍微麻烦些,但也所以给你更多反悔的时间)

我该如何使用多个 Vim 的配置文件

若是你喜欢个人双副本练习法,那么你将会遇到的一个问题是:Vim 老是很聪明的在打开时加载你的 ~/.vimrc 文件,该如何告知它加载另一份配置文件呢?答案很简单:

$ vim -u ~/.vimrc.basic

你能够把这条命令作一个 Alias,这样会更加快捷。另外在打开 Vim 的时候能够附加一些选项,使用 vim -h 能够看到这些选项的说明。

还有一个值得知道的技巧,在 Vim 中键入 CTRL-Z 会将 Vim 临时挂起并返回其父进程(多数状况下就是 Terminal Shell),以后在终端里输入 fg 回车以后会回到 Vim。这个技巧有助于你快捷的往返于 Vim 和 终端之间。若是你不方便按 CTRL-Z(好比 Windows……),能够用命令 :st[op]:sus[pend] 代替。


https://gist.github.com/nightire/9815652


set nocompatible                " use vim defaults
set t_RV=                       " http://bugs.debian.org/608242
" set runtimepath=$VIMRUNTIME     " turn off user scripts, https://github.com/igrigorik/vimgolf/issues/129

syntax on                       " turn syntax highlighting on by default
filetype on                     " detect type of file
filetype indent on              " load indent file for specific file type

set nobackup                    " do not keep a backup file
set novisualbell                " turn off visual bell
set visualbell t_vb=            " turn off error beep/flash

set ruler                       " show the current row and column
set number                      " show line numbers
set showcmd                     " display incomplete commands
set showmode                    " display current modes

set scrolloff=3                 " keep 3 lines when scrolling
set backspace=indent,eol,start  " make that backspace key work the way it should
set showmatch                   " jump to matches when entering parentheses
set matchtime=1                 " tenths of a second to show the matching parenthesis

set hlsearch                    " highlight searches
set incsearch                   " do incremental searching
set ignorecase                  " ignore case when searching
set smartcase                   " no ignorecase if Uppercase char present

" Default indenting options
set expandtab smarttab
set autoindent smartindent shiftround
set shiftwidth=2 softtabstop=2 tabstop=2

" Identify invisible characters and don't show them by default
set list listchars=eol:¬,tab:▸\ ,trail:.,

set background=dark
colorscheme grb256              " can not live without this two lines

" Make comments and special characters look better
highlight Comment    ctermfg=245 guifg=#8a8a8a
highlight NonText    ctermfg=240 guifg=#585858
highlight SpecialKey ctermfg=240 guifg=#585858
相关文章
相关标签/搜索