[倚天屠龙记] vim 标记


        像adobe reader这样的pdf阅读器在窗口左侧有一个书签栏,其中列出了pdf文件的目录结构,以方便在pdf文件的章节目录中进行快速跳转。无论是pdf的阅读器还是其它的普通文本编辑器,通常都有一个历史文件列表,其中记录了最后若干次打开的文件,以方便用户快速的查看最近查看过的文件。类似的功能vim自然也有,这就是它的标记功能。
        vim的移动命令已经相当丰富和灵活,在标记功能的帮助下,你浏览文件的效率将得到极大的提高。
要查看标记的帮助,请输入:help mark
        标记的概念很简单,就是记录了一个位置在文件中的行和列的位置,然后无论光标当前在哪,都可以跳转到记录的这个位置。
        首先是要设置标记,移动光标到你要标记的位置,然后按下ma或者:mark a或者,取出可创建一个名称为a的标记,记录了当前光标所在位置(m是mark的简写),然后当光标移动到了文件的其它地方之后,通过命令`a即可跳转到标记的位置(`是单反引号,位于数字键1的左边和ESC键的下方),也可以通过'a命令跳转到标记位置所在的行首('是单引号),`a与'a的不同在于`a能跳转到标记的列位置,而'a只跳转到标记位置所在的行首。标记的名称可以是a-zA-Z这26个字母的大小写,这表示最多只能有52个标记。在你设置了标记之后,你又对文件进行了修改,比如增删了一些行,标记的行数仍然会保持正确,当然前提是标记所在的行没有被删除,这种情况下标记也就被删除了。
        删除标记a的命令是:delm a或者:delmark a,也可以一次性删除多个标记,:delm a b c表示同时删除a,b,c三个标记。
        要查看全部标记列表可以输入:marks,也可以通过:marks a b c查看三个标记的位置,注意这比设置标记的冒号命令要多一个复数s。
        字母标记是可以手工指定的标记,小写的字母标记仅在当前文件中有效,这意外着当前打开的多个文件可以拥有各自的a-z标记,如果关闭了当前正在编辑的文件,则此文件的这些标记就全部丢失了,而大写的字母标记则可以用在文件间进行跳转。无论是小写还是大写的字母标记,在vim退出后就都全部丢失了。利用:delm!或者:delmarks!可以清除当前文件中的全部小写字母标记,大写字母标记在文件间跳转都有效,它不局限于一个文件,所以清理文件内部标记的命令当然不能清除它。如果要想在退出vim时将这些标记保存下来以便下次打开这些文件时仍然可以使用,可以使用viminfo文件,详细请查看帮助:help viminfo。
        除了字母标记,还有0-9这十个数字标记,但数字标记是vim预置的标记,不能手工进行修改,0号标记记录了vim上次退出时的光标位置。而1-9则是最近编辑的九个文件的最后关闭时光标位置,也即是历史记录。
        左中括号标记[记录了最后一次修改或者复制的文本块的起始位置,而右中括号则记录了这个文本块的结束位置。这是个比较有用的标记,当你由命令模式进入插入模式输入了一段文本之后,想跳转到这段新文本的起始位置处,就可以使用`[或者'[,如果还想再跳转回来,则可以按`]或者'],如果是复制或者粘贴了一段文本块,这个办法仍然适用。
        尖括号标记是用于标记最后一次用visual-mode选择的文本块的起止位置,左括号标记开始位置,右括号标记结束位置,这样,你用visual-mode选择了一段文本后,用`<跳转到此文本块第一个字符,用`>则跳转到最后一个字符的位置。用'<和'>则分别跳转到起止位置所在的行的行首。这样,如果你在visual-mode下选择了一段文本,而后又退出了visual-mode,这时如果你想复制这段文本,就可以先用`<跳到文本开始位置,按下y再用`>跳到文本结束位置,来实现不需要再次选中的情况下进行复制。
        单引号标记`与'记录了最后一次用标记进行跳转之前的光标位置,这通常用于跳转到某处后重新回到原来的地方。
        双引号标记记录的是最后一次离开本文件时的光标位置,如果是第一次打开,则它位于第一行第一个字符处。
        ^标记记录了最后一次退出插入模式时光标的位置,以方便在插入文本后又执行了一些命令行命令的情况下,回到最后的插入点继续插入新文本。
        点号标记.记录的是文件最后一处修改的位置,如果使用了像替换这样一次性修改多个位置的操作,则这个标记将指向该操作所修改的最后一处文本的位置。
        有了以上这些标记,你可以方便的在文件内部自己定义的标记之间来回切换,也可以打开历史文件列表寻找最近编辑过的其它的文件,在执行了一系列操作之后,可以方便的回到最后一次插入文本的位置和文件最后一处修改的位置,诸如此类。但是因为标记的数量是有限的,文件内部最多可以定义26个自己的标记(小写字母),因为如果想用标记来实现文章开头所讲的类似pdf阅读器的书签功能,仍然是不现实的,比如《红楼梦》就有一百二十回,要想达到大纲书签的功能,就要用到下一节所讲的vim的又一非常有用的功能了,那就是vim的折行功能。

你可能感兴趣的:(vim/emacs)