1. 首页
  2. 课程学习
  3. C++/C
  4. Vim进阶索引

Vim进阶索引

上传者: 2018-12-25 15:27:48上传 PDF文件 1.25MB 热度 61次
Vim使用进阶索引,作者使用vim达20年之久,经典之作模式行进阶索引进阶索引模式行什么是模式行?模式行的格式模式行中的附加文本模式行的另一种形式模式行应用为什么我添加了模式行却没作用?进阶索引模式行这是进阶索引的第一篇,本文假设用户已经掌握了的基本用法(正因为这个假设所以你里的一些内容你可能已经掌握了)。作为第一篇我们要讲的是相关帮助:什么是模式行?模式行()大家应该已经见过了。在文档底部通常会有这么一行这一行就叫模式行。模式行用来在文档中保存设置,在读入文档后根据模式行的指示对文档对行设置。这样通过在文档中写入模式行我们可以对文档进行个性化设置,定制文本的编辑环境。此外,模式行作为文档的附加信息有助于我们和别人了解一个文档一一推荐的文本宽度、使用的语法格式、缩进的方式等等。我们先看一下模式行的用法,再讨论我们可以做什么样的设置。模式行的格式几乎所有用命令可以使用的设置项都可以在模式行中使用(有少数设置项是不能在模式行中使用的,如)。但在进行设置之前必须在设置项前加上(也可以是或,注意一定要小写。),这是判别一模式行的关键。比如有一个文件我们希望每次打开后自动设置为只读,可以在文件中加入模式行。如果有多个设置项的话每个项之间用冒号或空格隔开。现在我们再看一下刚看到的底部的模式行现在我们知道在我们打开帮助后它自动进行了如下设置:设置文本宽度为;设置制表符宽度为;文件类型为帮助文件;阅读顺序为左到右。模式行中的附加文本如果我们在自己的日记中或者写作的过程中我们当然可以随意的在文件前几行或后几行添加模式行。但是在一些情况下我们不能直接地在文件开头或最后一行添加模式行一一比如程序的源代码,模式行最好是以注释的形式出现。要让模式行以注释的形式出现,只要在前面加入表示注释的命令或符号就行了。例如要在源文件末尾加入模式行:很简单对吧,事实上模式行的之前允许有任意的文字串。唯一的要求是文字串与'之间必须至少有一个空格。所以,像这样的模式行是允许的:今天是月日星期不过下面的模式行则会出错原因是后面的被当成一个设置项了,而事实上这个设置项不存在。为了能在模式行后面添加文字串(或者说为了使用风格的注释),我们要用到模式行的另一种形式模式行的另一种形式实际上模式行有两种形式,第一种就是前面说的设置项之间用冒号或空格分隔,缺点是不能后设置项后面添加其他文本。第二种要求使用命令。不能使用多条命令。但一条命令可以设置多个选项。选项之间用空格分隔。举例而言,像前面提到的文档的模式行以第二种形式写出来就是这种形式的好处就是或以是模式行末随意添加文本。下面的模式行都是允许的:模式行示例需要注意的是第一种形式中最后一设置项后的冒号或空格是可有可无的。而第二种形式中最后一设置项后一定要有冒号一一不管冒号后有没有文字。在设置项中如果要使用空格、制表符或冒号可以在前面加上转义符-丶。其他需要转义符的情况见模式行应用由于几乎所有的设置项都可以在模式行中使用所以模式行的使用完全视个人的需要而定。因为自己常用的设置可以放在文件中所以实际使用中放在模式行中的设置通常是针对某一文档的专有设置。需要在不同的电脑上编辑查看同一份文档时为了使用同样的设置也会使用模式行(如的文档)。正确显示制表符,使文档在不同的机子上有一样的制表符宽度写文章。使用个半角字符文本宽度(个汉字);序号缩进及汉字支持的格式选项;用个空格代替制表符;查看编码的图形字符(环境)时所用的设置。用来写看文件。我在行对行翻译时经常使用的设置设置折叠规则。关于折叠()我们在以后会讲到。设定关于在以后会讲到。为什么我添加了模式行却没作用?首先检查一下与前面的文本之间有没有一个(半角)空格其次模式行要求在文件开头的前行或后行中,如果没在这个范围内模式行就不起作用用来设置的具体数目。比如这个命令将模式行的有效范围设在了前行和后行最后看有没有设置丶选项。选项在中默认是开的但也有可能因为一些原因被关上了,比如设置了或是没有设置结束折叠进阶索引进阶索引折叠折叠有什么用途?折叠的生成折叠层级手工规则(缩进规则(标记规则()规实例演示唐诗笔记邮件使用提示小结进阶索引折叠折叠对我来说原本不是什么必不可少的功能。但现在却越来越感觉到这实在是个体贴方便的功能,我经常要保存一些资料但我不喜欢零散的一堆文本文件所以同样的某些特定类型的资料我将它们放在同一个文件中,通过折叠用我可以在同一个文件中管理管理多个文档而不至于混乱。与的其他功能相比折叠是很容易掌握的(至少和规则是这样的),如果你还没用上这项功能的话赶快往下看吧这一篇我们将要讲的是折叠。什么是折叠呢?复制一段文本到一新建文件中,在中输入输入看第三行到第八行是不是折叠起来了呢?这就是的折叠功能,很容易理解吧。先记住相关的帮助命令:在中输入,可以看到中折叠的相关文档。往下翻页你可以看到这里面的内容非常多,尤其是以开头的那一部分指令。好消息是要用好折叠并不要求全部掌握这些命令。当然至少要掌握这几个命令:。折叠的用法的精髓在该页的第一部分。它决定进行折叠所依据的规则。本文的目的是使用户对创建折叠有一个了解。并学会按自己想法来制定折叠规则。折叠有什么用途?如果你用过字处理软件的话那你可能会知道有一个大纲视图将标题一^标题二"作为大纲显示出来而相应的正文则呈现折叠状态。双击一个标题会展开对应的正文。通过这个视图用户可以对文档的结构有一个全局的了解,更可以有效地组织文本。折叠作用与大纲视图相近,同样让你可以有效的管理文档结构;方便地在文档的不同部分移动;让文档更清爽。此外折叠可以隐藏信息将不需要修改或不想看内容折叠起来。另外结合或我们可以在更多的场合使用折叠。请注意我们可以折叠任意行,所以折叠不等同于显示大纲。另外与大纲依靠手工套用样式生成不同,折叠可以用手工生成也可以是用户指定的规则生成。通过指定合适的规则我们使折叠成了一种脑力劳动。折叠让自己的文档看上去更整洁。同时可以方便地选取感兴趣的内容或屏蔽(如果不能删除的话)不想要的内容。如果你的文档有行的话你可以不想这做,但如果是成百上千行呢?使用折叠通常要求用户对文档进行某种方式的格式化,这使用户的文档既使在其他文本编辑器上也有较好的可读性当然,没有人规定折叠该怎么用,所以发挥你的创意吧。折叠的生成首先要了解设置项,它指定了折叠产生的方式。详细的文档请参考这两个命令:其中的规则分别表示根据手工设置、缩进、表达式、语法、标记的方式生成折叠。在了解如何生成折叠之前我们要先了解一个概念:折叠层级折叠层级折叠层级是用数字表示的折叠标志,根据折叠层级来决定是否折叠及怎样折叠某一行或某几行。当我们下折叠命令时()对每一行计算折叠层级,然后将折叠层级大于或等于丶(默认情况下)的行折叠起来。如果低折叠层级的几行中有高折叠层级的行时就形成折叠的嵌套。那这个折叠层级是如何计算出来的呢?折叠层级的计算方式取决于我们设定的。下面是不同折叠规则对应的计算方式手工规则下,折叠层级由折叠区域的嵌套关系计算。当我们手工指定一个折叠的区域后,对这个区域的开始行和结束行做记号,多个区域的开始行和结束行形成了嵌套关系。如果个折叠区域不包含在其他区域之中,则其折叠层级为;当这个区域直接包含于另一个区域时则其为折叠层级为另一个区域的层级加;依些类推行的缩进宽度除以,并向下取整得到每一行的折叠层级。同一折叠层级及更高折叠层级的连续行形成折叠。而其中的更高折叠层级的行一一如果有的话,形成嵌套的折叠。当使用标记规则折叠时,层级的计算跟手工规则相似。除了它是根据文件中的标记来划分个折叠区域而不是手工指定。然后根据这些区域间的嵌套关系计算折叠层级。具体使用的标记通过设置。默认是使用跟差不多,只是所用的标记是在语法文件中定义的,而不是通过设置。除了差异行及其前后三行一外,其余行折叠(层级为)由用户指定折叠层级的计算方式。方法是对进行设置。具体用法稍后说明手工规则(首先设置设置为或者(没错也行)。然后高亮选择可折叠的行,输入指令丶。就这么简单你已经折叠了文本。还可以在命令行用用法跟其他指令一样,如表示将第一行到当前行都折叠起来。需要注意的是如果使用折叠规则的话新建折叠时会为指定范围的开始和结束行添加标注意:如果只折叠一行的话,你可能不会立即看到效果缩进规则(首先,设置规则。然后在编辑过程中依需要进行缩进-。缩进挺容易理解的,将下面的例子复制到文件中保存关闭再用打开看看:开始第一行折叠层级为,无嵌套第二行第三行折叠层级为,第层嵌套第四行第五行折叠层级为,第层嵌套第六行第七行折叠层级为,第层嵌套第八行折叠层级为,无嵌套第九行折叠层级为,无嵌套第五行结束注意:正如前面提到的折叠的层级并不仅仅取决于你按了几个空格或制表符还与有关。改变上面例子中的`看有什么不一样。标记规则()见手工规则。规则要比前面的几种方式复杂点所以我们在这里单独讨论。使用时,我们需要对一设置项进行设置。它是用来保存我们设定的表达式,也就是我们指定的计算折叠层级的公式。我们将设置项设为特定的表达式然后通过这个项得到我们所指定的表达式逐行处理,并对每一行使用这个表达式计算出一个数值。这个数值就是该行的折叠层级根据层级进行折叠。举个例子:假设我们在中使用了如下命令:所有的行都会被折叠(如果没有的话再输入指令)。在每一行用指定的表达式计算结果。这个例子中我们的表达式是,所以每行得到的折叠层级都是,于是所有行折叠成一行。同理如果你将它赋于的话则所有行的折叠层级为,所有行被折叠成一行。当我们的表达式最后返回一个数值时这个数值就是折叠层级。为了让这表达式更灵活,更能满足我们的需要我们需要补足一些脚本知识一,这里是三个在折叠的表达式比较常用几点内置变量,表示是"当前行的行号″。查看更多内置变量。函数用以返回指定行的内容。元条件语句。见另外如果需要构造复杂的表达式,我们可以在自定义的函数中定义。但这又是另一篇教程了。看一下现在我们能构造出怎么样的表达式:指定每行的行号为折叠层级,这样所有行会折叠成一行。试试看用指令`逐层打开折叠,打开层之后就没有折叠了—一而不是我们想的ν嵌套数=行数"。这是因为对折叠的嵌套数是有限制的,默认最深可以层。但我们可以用这个项来进行自定义设置,如注意最多支持层的嵌套,所以设置超过的值会被当成将第至第行折叠。也就是让在第至行时返回数值(也可以是、),其他时候为。我们知道是逐行处理的,所以如果我们知道正在处理的行的行号我们就可以进行比较了。当然你已经知道了,我们需要的就是下面是用规则模拟规则的例子。基本上没有任何实用价值,但至少能让我们又的强大有个认识:用模拟规则用函数得到当前缩进用操作符得到一个设置项的值如果有缩进宽度超过阈值则计算折叠层级
用户评论