资讯专栏INFORMATION COLUMN

Vim 的哲学(三)

klinson / 2370人阅读

摘要:插件键位映射技巧性的配置等等都是锦上添花,它们有助于你进一步提高效率以及个性化你的工作环境,但是对于哲学的理解帮助甚少。为你开启语法高亮。你可以自定义各种语言的语法高亮,无非就是根据这些规

  

如果没有挑战,人生将多么无趣!

两种副本

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

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

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

还有一个原因是,我经常不得不面对很多没有配置的基础环境,比如新安装的服务器等。此时没有我惯用的环境和配置帮助我,我不想让自己感觉到束手束脚,我希望我可以不需要依赖插件和高级配置就能流畅高效的工作。

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

  

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

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

在日常的工作当中,我经常切换到这个配置环境下,离开所有的插件、键位映射、宏等辅助手段,只使用 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)。另外,你可以输入 :ju[mps] 打开一个跳转历史列表,看到都有哪些位置可供跳转。

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

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

中文文档在线阅读版

中文文档下载安装版 下载安装可以让你 Vim 里直接查看中文文档,但是安装和设置对新手略有难度(安装说明),在线版内容是一样的。

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 开始的负整数。这有什么用呢?它可以帮你快速的精确定位距离当前行的偏移数。见下图就明白了:

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

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

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

set nonu nornu:不显示行号

set nu nornu:显示绝对行号

set nonu rnu:显示相对行号(当前行为 0)

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 会即时匹配你当前输入的内容,这样会给你更好的搜索反馈,不过你还是要在最后输入 (回车)来确认你的搜索内容的。

set incsearch
ignorecase :help "ignorecase"

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

set ignorecase
smartcase :help "smartcase"

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

set smartcase
expandtab :help "expandtab"

符号转变为 ,也就是空格。这个对于现代程序员来说非常重要——谁还用 缩进来着?

set expandtab
smarttab :help "smarttab"

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

所以,如果开启 smarttab,然后 shiftwidthtabstop 设定不一样的数值,比如一个是 8 一个是 4,那么在行首键入 会产生 8 个字符的空白,而在其他地方键入 则产生 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 就是 字符所代表的空格数,一般我们会用 expandtab 转变成空格符,然后键入 时就会产生 tabstop 个空格了。这是现在普遍的做法。

set tabstop=2
softtabstop :help "softtabstop"

softtabstop 会影响 删除的空格数,但不是用 插入的空格,而是 插入的空格。所以我们总是把 softtabstop 设定成和 tabstop 一样的数值,这样无论是用 插入缩进还是用 删除缩进,其行为总是一样的。

但是对于使用 输入的空格,哪怕是连续输入的若干个空格, 还是会一个一个的删除。

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:.,

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

你可以清楚的看到在 17,18,19 这三行故意输入的 trailing 在屏幕中留下的标记。

Keep it simple...

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

然而,另外一个顾虑是担心你迫不及待的把看到的设置统统都加上,我的建议是慢慢来。因为很多设置都有副作用,尽管这些副作用实际上都在文档里有说明,但查找文档是辛苦活儿,这一点我心知肚明。当一次性应用很多设置的时候,你总会有摸不着头脑的时候,到了那时再去一个一个排查更是吃力不讨好的苦差事。

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

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

设置选项 功能描述 附注
background 配色主题的色系 注意,这不是什么背景色!dark 是暗色系,light 是亮色系。
colorscheme 配色主题的名称 grb256 是我偏爱的配色主题,但不是 Vim 自带的,所以你照抄的话一定报错。默认自带的主题也不多,你可以在输入 :colo[rscheme] 然后敲 自动补全然后自己试,推荐 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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24763.html

相关文章

  • Vim替换小技巧(兼浅谈Vim哲学

    摘要:本文将以此为起点,介绍一些替换小技巧。实话实说,使用命令来替换有违于大多数程序员的习惯。接下更进一步,教多几个小技巧。这么一来,替换将仅在当前大括号内生效。在替换局部变量时,比起全局替换,这样的替换方式无疑会更高效。 想必用过Vim的人都知道,在Vim里面,以下命令可以替换当前文件的内容: :[range]s/{要被替换的模式}/{替换的内容}/[flags] 其中range指定替换命...

    ConardLi 评论0 收藏0
  • Vim 哲学(一)

    摘要:之所以能卓尔不群靠地就是一种自成一派且精悍有效的编辑器哲学当然也是,就好像网游千千万却唯有一览众山小,那靠地不是技巧与外在,而是与众不同的世界观。征服其实是一种领悟,我融入了的哲学而已。这也是好东西,它比上一个更贴近的哲学。 就在几个小时以前,我回答了一个关于推荐开发工具的问题,很多朋友表示喜欢和鼓励,非常感谢!我也很想多写一些细节,于是便起意开一个系列来聊聊我多次提到的 Vim。 ...

    honhon 评论0 收藏0
  • Vim 哲学(二)

    摘要:为什么要有模式呢以上其实已经讲述了一些原因,但真正的价值还在于接下来要讲到的哲学。鼠标与快捷键的操作治标不治本,它们没能从根本上解决这个问题。 学会用不同的角度去看待和理解这个世界,你收获的永远会比你想象的更多。 上回我分享了如何掌握基础移动的心得体会,而对于很重要的模式却只是一带而过,这其实是有原因的。过去我有过几次教新手 Vim 的经历,按照惯常的方式先告诉他们模式切换,...

    ashe 评论0 收藏0
  • Vim 哲学(四)

    摘要:的哲学第四篇姗姗来迟,狗血的原因我就不多说了,好消息是我将为这个系列带来一些动态演示。所以目前为止你学会上述四个动作指令就足够了。以词为单位使得我们可以更精确也是更具语义化的移动光标,并且要比逐个字符的移动要快得多。 Vim 的哲学第四篇姗姗来迟,狗血的原因我就不多说了,好消息是我将为这个系列带来一些动态演示。原本我打算录视频的,但是文章都写了那么些篇了,现在再录视频似乎晚了些,所以我...

    xiao7cn 评论0 收藏0
  • Vim - 适合自己,才是最好

    摘要:原文链接适合自己的,才是最好的被称为编辑器之神,是我用过之后才体会到的,用之前实在不敢对它做出什么评价。最初的不适,换来的是效率的飞升。感悟在学习使用的过程中,我最大的感悟就是适合自己的,才是最好的。 原文链接:Vim - 适合自己的,才是最好的 Vim 被称为编辑器之神,是我用过之后才体会到的,用之前实在不敢对它做出什么评价。在大学时代,Vim 的大名就已如雷贯耳,但由于它陡峭的学...

    legendmohe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<