vi/vim使用进阶: vimrc初步

<< 返回vim使用进阶: 目录

上一章我们介绍了会话(session)文件和viminfo文件,其中‘sessionoptions’选项和‘viminfo’选项的配置可能会根据你的需要进行调整。但如何保存你所做的调整呢?我们将在这一章中介绍。

本节所用命令的帮助入口:

:help compatible
:help mapleader
:help map
:help autocmd 

为什么我的vim这么难用?不能语法高亮,没有折行,不能打开多个窗口多个buffer,不能……

为什么别人用几个键就可以完成一个很复杂的功能,而我不能?

为什么别人的vim看起来和我的很不一样?

……

当你开始问这些问题的时候,是时候去检查一下你的vimrc了。

当vim在启动时,如果没有找到vimrc或gvimrc,它缺省工作VI兼容的模式。这意味着,你只能使用VI所具备的功能,而vim中的大量扩展功能将无法使用。也许这就是你的vim如此难用的原因。

vim中自带了一个vimrc例子,让我们从这个例子开始吧。

下面我以Linux下的vim为例,windows版本的vim,会在后面提到。

示例的vimrc(名为vimrc_example.vim)通常位于/usr/share/vim/vimXXX/目录下,其中vimXXX与你所使用的vim版本有关。

首先把这个示例的vimrc拷贝到相应的目录,在Linux下,应该把它拷贝到你的home目录下,名字为”.vimrc”,下面是shell命令:

cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc 

或者你在vim中执行下面的命令,和上面的shell命令完成相同的功能:

:!cp $vimRUNTIME/vimrc_example.vim ~/.vimrc 

现在,你退出vim后再进入,你的vim和刚才已经不一样了。

你可以先读一下你的vimrc,看看它都设定了什么:

:e ~/.vimrc 

这是一个注释良好的文件,不需要多解释。

对windows版本的vim,它已经缺省的有了一个vimrc,你可以在vim在使用下面的命令来查看它:

:e $vim/_vimrc 

在这个文件中,它包含了上面提到的vimrc_example.vim。同时,它会把vim设置的更符合windows的操作习惯。比如,支持CTRL-C拷贝,CTRL-V粘贴等等。Windows下的用户,可以使用$vim/_vimrc来做为你的第一个vimrc。

顺便提一句,在unix/linux中,文件名可以以”.”开头,表明此文件是隐藏的。而在windows中,不允许文件名以”.”开头,所以,windows版本的vim,将读取_vimrc来做为自己的配置文件。

在今后使用vim的日子里,你会频繁的更改你的vimrc。所以我们需要设置一些快捷方式,使我们能快速的访问vimrc。

把下面这段内容拷贝到你的vimrc中:

1    "Set mapleader
2    let mapleader = ","
3
4    "Fast reloading of the .vimrc
5    map <silent> <leader>ss :source ~/.vimrc<cr>
6    "Fast editing of .vimrc
7    map <silent> <leader>ee :e ~/.vimrc<cr>
8    "When .vimrc is edited, reload it
9    autocmd! bufwritepost .vimrc source ~/.vimrc 

为了方便解释,我给每一行都加了一个行号。

  • 在vimrc中,双引号开头的行,将被当作注释忽略。
  • 第2行,用来设置mapleader变量,当mapleader为未设置或为空时,使用缺省的”\”来作为mapleader。

    mapleader变量是作用是什么呢?看下面的介绍。

  • 第5行定义了一个映射(map),这个映射把<leader>ss,映射为命令:source ~/.vimrc<cr>。当定义一个映射时,可以使用<leader>前缀。而在映射生效时,vim会把<leader>替换成mapleader变量的值。也就是说,我们这里定义的<leader>ss在使用时就变成了”,ss“,当输入这一快捷方式时,就会source一次~/.vimrc文件(也就是重新执行一遍.vimrc文件)。
  • 第7行,定义了<leader>ee快捷键,当输入,ee时,会打开~/.vimrc进行编辑。
  • 第9行,定义了一个自动命令,每次写入.vimrc后,都会执行这个自动命令,source一次~/.vimrc文件。

有了上面的快捷键,我们就能快速的打开vimrc文件编辑,快速重新source vimrc文件,方便多了。

无论在windows还是在linux中,我都使用vim作为我的缺省编辑器。并且,我想使用同一个vimrc文件。因此,我定义了一个MySys()函数,用来区分不同的平台,以进行不同的配置。

另外,在编辑vimrc文件时,我更喜欢新开一个标签页来编辑,而不是在当前窗口中。因此,我定义了SwitchToBuf()函数,它在所有标签页的窗口中查找指定的文件名,如果找到这样一个窗口,就跳到此窗口中;否则,它新建一个标签页来打开vimrc文件。(注:标签页(tab)功能只有在vim 7.0版本以上才支持。)

下面是我的vimrc中使用的设定,希望能够抛砖引玉:

" Platform
function! MySys()
  if has("win32")
    return "windows"
  else
    return "linux"
  endif
endfunction

function! SwitchToBuf(filename)
    "let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")
    " find in current tab
    let bufwinnr = bufwinnr(a:filename)
    if bufwinnr != -1
        exec bufwinnr . "wincmd w"
        return
    else
        " find in each tab
        tabfirst
        let tab = 1
        while tab <= tabpagenr("$")
            let bufwinnr = bufwinnr(a:filename)
            if bufwinnr != -1
                exec "normal " . tab . "gt"
                exec bufwinnr . "wincmd w"
                return
            endif
            tabnext
            let tab = tab + 1
        endwhile
        " not exist, new tab
        exec "tabnew " . a:filename
    endif
endfunction

"Fast edit vimrc
if MySys() == 'linux'
    "Fast reloading of the .vimrc
    map <silent> <leader>ss :source ~/.vimrc<cr>
    "Fast editing of .vimrc
    map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>
    "When .vimrc is edited, reload it
    autocmd! bufwritepost .vimrc source ~/.vimrc
elseif MySys() == 'windows'
    " Set helplang
    set helplang=cn
    "Fast reloading of the _vimrc
    map <silent> <leader>ss :source ~/_vimrc<cr>
    "Fast editing of _vimrc
    map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr>
    "When _vimrc is edited, reload it
    autocmd! bufwritepost _vimrc source ~/_vimrc
endif

" For windows version
if MySys() == 'windows'
    source $VIMRUNTIME/mswin.vim
    behave mswin
endif 

注意:我在windows中也定义一个”HOME”环境变量,然后把_vimrc放在”HOME”环境变量所指向的目录中。如果你打算在windows中使用上面的设定,也需要这样做!

好了,现在我们知道如何永久更改‘sessionoptions’选项和‘viminfo’选项了,把对它们的配置放入你的vimrc即可。

vim自带的示例vimrc中,只定义最基本的配置。

http://www.amix.dk/vim/vimrc.html有一个非常强大的vimrc,有人戏称为”史上最强的vimrc”,或许有些言过其实。不过,如果你通读了这个vimrc,相信能从中学到很多……

这里有一个redguardtoo修改过的版本,可以对照参考一下。

我的vimrc也是基于Amix的模板,然后自已做了很多修改。

建议:不要照拷这个vimrc!可能这个文件的设定并不符合你的习惯。另外,这个文件的设定,可能也不能在你的工作环境中运行。

[参考文档]

<< 返回vim使用进阶: 目录

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-introduce-vimrc/

文章的脚注信息由WordPress的wp-posturl插件自动生成

vi/vim使用进阶: 使用会话和viminfo

<< 返回vim使用进阶: 目录

本节所用命令的帮助入口:

:help mksession
:help 'sessionoptions'
:help source
:help wviminfo
:help rviminfo
:help 'viminfo'

很多软件都具有这样一种功能:在你下一次启动该软件时,它会自动为你恢复到你上次退出的环境,恢复窗口布局、所打开的文件,甚至是上次的设置。

那么,vim有没有这种功能呢?

答案当然是肯定的!这需要使用vim的会话(session)及viminfo的保存和恢复功能。

使用会话(session)和viminfo,可以把你编辑环境保存下来,然后你在下次启动vim后,可以再恢复回这个环境。我们在开发项目或书写文档时,其周期不是一两天。如果你在中途退出了vim而不能恢复原先的编辑环境的话,你又要重新打开你所打开的文件,重新定义你的映射(map)、缩写(abbreviate),重新定位你所设定的标记的位置(mark),重新设置项目相关设置(options)……不是一般的麻烦!

要恢复上次的编辑环境,我们需要保存两种不同的信息,一种是会话(session)信息,另外一种是viminfo信息。

  • 会话信息中保存了所有窗口的视图,外加全局设置。
  • viminfo信息中保存了命令行历史(history)、搜索字符串历史(search)、输入行历史、非空的寄存器内容(register)、文件的位置标记(mark)、最近搜索/替换的模式、缓冲区列表、全局变量等信息。

我们在下面分别对其进行介绍。

[会话]

我们可以使用:mksession [file]命令来创建一个会话文件,如果省略文件名的话,会自动创建一个名为Session.vim的会话文件。会话文件,其本质上是一个vim脚本,你可以使用上述命令生成一个session文件,然后再查看其中的内容,就会对session文件有一个深入的认识。

会话文件中保存哪些信息,是由‘sessionoptions’选项决定的。缺省的‘sessionoptions’选项包括: “blank,buffers,curdir,folds,help,options,tabpages,winsize”, 也就是会话文件会恢复当前编辑环境的空窗口、所有的缓冲区、当前目录、折叠(fold)相关的信息、帮助窗口、所有的选项和映射、所有的标签页(tab)、窗口大小。

如果你使用windows上的vim,并且希望你的会话文件可以同时被windows版本的vim和UNIX版本的vim共同使用的话,在‘sessionoptions’中加入‘slash’‘unix’,前者把文件名中的’\’替换为’/’,后者会把会话文件的换行符保存成unix格式。

如果你不希望在session文件中保存当前路径,而是希望session文件所在的目录自动成为当前工作目录,那么,需要在‘sessionoptions’去掉‘curdir’,加入‘sesdir’,这样每次载入session件时,此文件所在的目录就被设为vim的当前工作目录。在你通过网络访问其它项目的session文件时,或者你的项目有多个不同版本(位于不同的目录),而你想始终使用一个session文件时,这个选项比较有用:你只需要把session文件拷贝到不同的目录,然后使用就可以了。设置此选项后,session文件中保存的是文件的相对路径,而不是绝对路径。

我们在上面使用:mksession命令创建了会话文件,那么怎么使用会话文件恢复编辑环境呢?很简单,你只需要使用:source session-file来导入会话文件。因为会话文件是一个脚本,里面保存的是Ex命令,所以”source“命令只是把会话文件中的Ex命令执行一遍。

[viminfo]

使用:wviminfo [file]命令,可以手动创建一个viminfo文件。

其实,在vim退出时,每次都会保存一个.viminfo文件在用户的主目录。我们使用:wviminfo命令则是手动创建一个viminfo文件,因为缺省的.viminfo文件会在每次退出vim时自动更新,谁知道你在关闭当前软件项目后,又使用vim做过些什么呢?这样的话,.viminfo中的信息,也许就与你所进行的软件项目无关了。还是手动保存一个保险。

“:wviminfo”命令保存哪些内容,以及保存的数量,由‘viminfo’选项决定,这个选项的值在windows上和在linux上的缺省值不同,具体含义参阅手册。

要读入你所保存的viminfo文件,使用:rviminfo [file]命令。

现在,回到我们的例子,依旧是上篇文章中的抓图,先看一下我们当前目录,执行:pwd,显示”/home/easwy/src/vim70″,接下来,执行下面的命令:

:cd src                            "切换到/home/easwy/src/vim70/src目录
:set sessionoptions-=curdir        "在session option中去掉curdir
:set sessionoptions+=sesdir        "在session option中加入sesdir
:mksession vim70.vim               "创建一个会话文件
:wviminfo vim70.viminfo            "创建一个viminfo文件
:qa                                "退出vim

退出vim后,在命令行下执行gvim &,再次进入vim,这时看到的是一个空白窗口。然后执行下面的命令:

:source ~/src/vim70/src/vim70.vim  '载入会话文件
:rviminfo vim70.viminfo            '读入viminfo文件

太棒了,又恢复到昨天退出时的状态了!继续工作~~~~

不过,每次都要手工修改‘sessionoptions’‘viminfo’吗?多麻烦啊……别着急,现在是时候介绍vimrc了,请移步下一章: vimrc初步。

[参考文档]

  1. vim手册
  2. vim中文手册

<< 返回vim使用进阶: 目录

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-session-file-and-viminfo/

文章的脚注信息由WordPress的wp-posturl插件自动生成

vi/vim使用进阶: 序言

<< 返回vim使用进阶: 目录

  从初次接触vim,到现在已经有好些年时间了。在软件开发中使用vim,不过是近两年的事情。对vim的了解远远算不上深入,不过还是把自己使用vim的一些经验写出来,希望对vim用户有所帮助。

  本系列文章介绍我自己使用vim的一些经验,主要包括vim使用技巧、vim配置、vim命令、vim插件等内容。本篇是序言,务虚为主。

  在使用vim进行软件开发之前,我使用的工具是Source Insight,相信大家并不陌生。Source Insight是一个不错的工具,特别是在浏览代码方面。在面对成百上千个文件组成的陌生源代码时,使用Source Insight可以让你很快的了解软件的主体流程、调用关系、类型定义……。使用Source Insight写代码也不错,它的自动补全功能很强,似乎使用拷贝、粘贴,加上自动补全,就可以完成代码了。不再使用Source Insight的原因有二个,一是Source Insight只支持windows,不能在Linux上用;二是不想再用盗版的Source Insight。

  在决定使用vim前,也在vim和emacs犹豫了很久,最终懒惰的天性让我放弃了emacs:实在是不习惯在移动光标时,也要用两只手按住CTRL/ALT/SHIFT再加个什么键;我的天性喜欢偷懒,能用一个手指做的事,不想用两个手指完成。所以最终选择了使用vim。现在感觉,vim和emacs在文本编辑方面不分伯仲。emacs的优势,在于它的可扩展性,使它可以完成很多和文本编辑无关的事情;不过这也造成了它的过于庞大。

  刚改用vim,最不适应的是不能再用鼠标指哪儿打哪儿了(vim当然支持鼠标,只是双手在键盘、鼠标间切换,很是影响效率),然后是拷贝、粘贴,然后是查看调用关系,函数间跳转,再然后……总之,刚开始的一段时间非常痛苦,效率也非常的低,甚至总是想着放弃。经过这段时间以后,逐渐摸到一些窍门,也渐渐的知道到哪里去寻求帮助,在哪儿可以找到vim的资源,工作效率一点点提升了上来。到现在,工作中已经离不开vim了,vim成了计算机中缺省的文本编辑工具!

  其实,对vim和emacs这样的工具来说,它们最强大之处,在于它们的可定制性。由于它们的可定制性,你完全可以定制出一个符合你自己编辑习惯的编辑器,在这样一个编辑器里,你的工作效率将达到最高。当然,要达到这样的境界,你需要付出非常坚苦的努力!如果你的工作是以文本编辑为主,例如,你是一个程序员,那么付出这种努力是值得的,也是有回报的。如果你没有很多文本编辑工作要做,那么也没有必要耗费这么大的力气,来学习这些工具。

  最后对vim的初学者提一些建议:

  1. 如果你的工作以文本编辑(不是指Microsoft word中的文本编辑)为主,那么学习vim或emacs是值得的;
  2. 刚开始使用vim或emacs的经历是很痛苦的,因为它们可能完全不同于你已经习惯的windows编辑器。我的建议是:坚持下去!咬牙坚持下去!你会获得回报的。
  3. vim手册 (help files) 是学习如何高效使用vim的重要资源,一定要多读手册。如果你是因为害怕读英文手册而不肯学习vim的话,那么,到vim中文文档下载vim 7.0的中文手册,安装好后,再使用”:help @cn”命令,你就可以看到中文手册了。
  4. 如果你是第一次接触vim,那么使用”:help tutor“或”:help tutor@cn“,你就会看到一个30分钟的vim教程,会教会你vim的一些基本命令。
  5. 有时间的话,一定要阅读一下Bram Moolenaar(vim的作者)写的Seven habits of effective text editing(七个有效的文本编辑习惯),你可以知道怎样提高你的编辑效率。在http://vimcdoc.sourceforge.net/下载PDF格式的手册,在附录二你可以看到它的中文译本。

  本系列文章都针对vim 7.0版本,如果这里介绍的功能在你的vim中不存在,不妨升级到vim 7.0后再试一次。

  我以Linux版本的vim 7.0为例。vim也有支持windows的版本,可以到vim主页下载预编译的的windows版vim 7.0。

  文章尽量不涉及具体的软件源代码,如果确实需要,则以vim 7.0的源代码为例。此代码可以也可以在vim主页下载,我把它解压在~/src/vim70目录下。后续文章以此目录为例进行讲解。

  附图是我所使用vim环境,在这副图中,我打开了三个标签页,一个是主编程区,一个是打开的.vimrc文件,另外一个是草稿区。在主编程标签页中有几个不同的窗口,分别是当前打开的buffer,当前文件中的tag,help窗口,lookupfile窗口,src/main.c和src/edit.c。其中使用了三个vim插件(plugin):winmanager, taglist, lookupfile

  从这副图中可以看出vim的一些特性:多标签支持(tab)、多窗口支持、插件支持(plugin)、语法高亮功能(syntax)文本折叠功能(folding)……这些特性,以及其它数不清的特性,我都将在后续文章中尽量给予介绍。

  上图是GUI界面的vim,下图是控制台(console)下的vim的抓图。这是我通常的开发方式:使用putty远程登录到linux服务器上,使用控制台的vim开发软件:

  对vim的了解有限,请多指教。

<< 返回vim使用进阶: 目录

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-prologue/

文章的脚注信息由WordPress的wp-posturl插件自动生成

vi/vim使用进阶: 目录

本系列文章,是原来我在CSDN的Easwy专栏撰写的”使用VIM开发软件项目”系列。Easwy的博客搬家以后,就把CSDN上的文章全部移到此处。

写本系列文章的最初想法,是介绍如何用vi/vim开发软件。但纵观整个系列,讲述的其实和软件开发关系并不大,基本都在讲vim的使用技巧、vim的配置及vimrc、vim的命令和vim的插件。因此,把文章移到新站后,我把本系列的名字改为”vi/vim使用进阶”,希望大家一如既往的支持该系列。

本文是这一系列文章的总目录,可由此访问本系列所有文章。

我使用docbook重新整理了一下这些文章,你可以在这里下载html版本的vi/vim使用进阶,现在也提供PDF版本下载。

[目录]

  • vi/vim使用进阶: 序言

    本文是本系列的序言,讲述我使用vi/vim的经历和心得,以及对vi/vim初学者的一些建议。文中的抓图展示了我的vim使用环境。

  • vi/vim使用进阶: 使用会话和viminfo

    本文介绍如何使用vim的会话 (session) 和viminfo来恢复vim的使用环境。如果你需要经常恢复到相同工作环境,此功能非常有用,你不必一次次重新打开文件、设置你的工作环境。

  • vi/vim使用进阶: vimrc初步

    本文简要介绍了vimrc的知识以及如何使用vimrc保存vim的配置。文中还提供了一些键映射(map),使用这些映射可以快速编辑和加载vimrc。关于vimrc的更多应用,参见本系列其它文章。

  • vi/vim使用进阶: 保存项目相关配置

    本篇主要以path选项为例,讲述如何保存和恢复项目相关的配置。在使用vim的过程中,你可能同时打开几个project,每个project的配置可能都不相同,文中介绍了两种方法来保存每个project自身的独有配置。一种是使用一个固定的vim配置脚本保存project相关的path设置、按键映射等;另外一种是利用前面文章所介绍的会话(session)机制。

  • vi/vim使用进阶: 使用标签(tag)文件

    本文介绍了如何使用Exuberant ctags生成tag文件以及在vim中如何使用tag文件进行跳转、查找等操作。还简要介绍了tag文件的格式,在后面介绍的Lookupfile插件中,会利用tag文件便捷的查找、打开文件。

  • vi/vim使用进阶: 使用taglist插件

    本文介绍如何使用taglist插件(plugin)来查看程序中的标签(tag),并介绍了taglist插件的配置和用法。taglist插件利用Exuberant ctags程序生成标签文件,并提供像Source Insight那样的标签窗口,可以方便的跳转到函数、变量等标签所在的位置。

  • vi/vim使用进阶: 文件浏览和缓冲区浏览

    本节介绍了如何在vim中浏览文件,以及如何查看当前打开的缓冲区。利用netrw插件,可以方便的在vim中浏览各个目录、打开指定文件,而不用切换到文件浏览器或shell;当然,netrw插件的作用并不仅仅局限于此。利用bufexplorer插件,则可以方便的查看打开的缓冲区(buffer),在缓冲区间进行切换。本文的最后介绍了winmanager插件,使用这个插件,可以把netrw插件、bufexplorer插件和taglist插件整合起来,使vim看起来更像一个集成开发环境(IDE)。

  • vi/vim使用进阶: lookupfile插件

    如果你在开发一个大的项目,当你想在一大堆文件中查找或者编辑指定文件时,Lookupfile插件是必不可少的。使用它,可以快速查找项目文件、可以在缓冲区查找指定文件、可以浏览指定目录等。在查找时甚至可以使用正则表达式(regex),在你只记得部分文件名或目录名时,这可是救命的手段。

  • vi/vim使用进阶: 开启文件类型检测

    vim最吸引人的一点是,它支持无穷多的文件类型,而且能够随意扩展。在本文主要介绍如何打开文件类型检测的功能,以及如何使用基于文件类型的插件(filetype plugin)。正因为有了文件类型检测的功能,我们才可能针对不同的类型的文件,定义不同的键映射(map)、设置不同的选项,进行语法高亮的染色(后续文章中介绍)…你可以实现任意你想实现的功能。

  • vi/vim使用进阶: 乱花渐欲迷人眼 – 语法高亮

    VIM并不是只有黑色两色。正相反,它提供了非常灵活的机制允许用户自定义色彩。运行在终端中的VIM,由于终端本身的限制,只能使用若干种固定的颜色;但对于GVIM来讲,你可以根据你的喜好调出任意的颜色。本文介绍的,正是vim的语法高亮功能。

  • vi/vim使用进阶: 程序员的利器 – cscope

    在前面的文章中介绍了利用ctags生成的tag文件,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用更为强大的cscope。本文就介绍如何使用cscope,有了它,你可以把source insight抛到一边去了。

  • vi/vim使用进阶: 剑不离手 – quickfix

    vim由一个程序员开发,并且为更多的程序员所使用,所以vim对开发人员的强大支持,也就可以理解了。quickfix模式的引入就是一个例子。quickfix模式,是一种加速你开发的工作方式,使你不必离开vim,就可以快速的完成”编辑-编译-修正”你的程序。它不仅仅对开发人员有用,只要你的工作有类似”编辑-编译-修正”的过程,它就可以极大的简化你的工作。

  • vi/vim使用进阶: 智能补全

    使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。本文主要介绍vim的OMNI补全。将在下一篇中介绍其它的补全方式。

  • vi/vim使用进阶: 自动补全

    本文继续介绍vim的补全功能。作为一个通用的编辑器,vim实现的补全功能并不仅仅限于对程序的补全,它可以对文件名补全、根据字典进行补全、根据本缓冲区或其它缓冲区类似的内容进行补全、根据文件语法补全等等,它甚至允许用户自己编写函数来实现定制的补全。本文简要介绍了这些补全的方法。

  • vi/vim使用进阶: 指随意动,移动如飞 (一)

    VIM提供的移动方式多如牛毛,但我们并不需要掌握全部这些命令,只需要掌握最适合自己的那些命令。本文介绍了最常用的一些移动命令,在下篇文章中将介绍更高级的移动方法。

  • vi/vim使用进阶: 指随意动,移动如飞 (二)

    本文介绍如何在vim中移动,主要涉及如何使用跳转表(jump-motions)、使用标记(mark)、使用折行(fold),以及如何在程序中移动。

  • vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

    本文介绍了如何使用vimgdb补丁在vim中用gdb调试程序,同时还介绍了vim的编译方法。然而,vim只是一个编辑器,而不是一个集成开发环境(IDE),所以它对调试的支持很有限。

  • vi/vim使用进阶: vimgdb调试时的常见问题及解决

    在上篇文章中我介绍了如何使用vimgdb补丁在vim/gvim中调试程序。后来陆续有一些读者反馈了他们在使用中遇到的问题。在本文中总结一下常见的问题及解决办法。

  • vi/vim使用进阶: 在gvim中使用GDB调试 – 使用pyclewn

    本文介绍了如何使用pyclewn在gvim中用gdb调试程序。pyclewn是vimgdb作者的另外一个作品,使用它可以使gvim在UNIX/LINUX以及windows上与gdb集成调试。

  • vi/vim使用进阶: vim编译中遇到的问题及解决方法

    本文主要介绍vim编译中遇到的问题及解决办法。文中介绍了如何通过看config.log,来了解配置失败的原因。有些网友编译图形化的gvim失败,可以参照本文的方法解决。

  • vi/vim使用进阶: 在vim中使用拷贝/粘贴

    未完待续

  • vi/vim使用进阶: 映射自己的vim按键

    未完待续

  • vi/vim使用进阶: 巧用vim的缩写功能

    未完待续

  • vi/vim使用进阶: 强大的自动命令(autocmd)

    未完待续

  • 其它你感兴趣的话题

    未完待续

原创文章,转载请注明:转载自Easwy的博客 [ http://easwy.com/blog/ ]

    本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-catalog/

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/advanced-vim-skills-catalog/

文章的脚注信息由WordPress的wp-posturl插件自动生成

xlink:href不能生成html超链接

刚开始使用Docbook 5.0,遇到一个很奇怪的问题,当我使用下面的代码时:

<link xmlns:xlink=’http://www.w3.org/1999/xlink/’
xlink:href=’http://easwy.com/blog/’>Easwy的博客</link>

然后转换成html格式,超链接总是丢失。为了解决这个问题,我进行了很多尝试。

刚开始怀疑Windows版本的xsltproc有Bug,于是换到Linux下,再进行转换,情况还是一样。接下来,把xsltproc换成其它的转换工具,但换成Saxon后,生成的html文件中依然没有超链接信息。

看来应该是自己Docbook文档写的有问题,于是尝试为xlink增加各种属性,先后试了xlink:type=’simple’,xlink:show=’new’,xlink:lable=’easwy.com’,可无论怎么改,最后的效果完全相同。于是我又尝试使用Docbook 4.4中的ulink来表示链接,这次一切正常。按DocBook V5.0 The Transition Guide的说法,应该”link xlink:href”在Docbook 5.0里已经取代了ulink,为什么不行呢?

在网上Google了很久,都没发现其它人出现过同样的问题,看来问题还是出在自己的Docbook文档中。无意在看一个网页时,发现它的xlink的namespace的URL写做

xmlns:xlink=’http://www.w3.org/1999/xlink’

而不是我的

xmlns:xlink=’http://www.w3.org/1999/xlink/

注意到区别了吗?我的URL在结尾处多了一个”/”。

当我把xlink的URL改成不带结尾”/”的后,生成的html文件终于包含超链接了。
原来,只要”xmlns:xlink”中的链接地址不正确,就不能生成超链接。

问题是如此简单!不知道还有没有人犯和我同样的错误。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/xlink-href-can-not-generate-hyperlink/

文章的脚注信息由WordPress的wp-posturl插件自动生成

easwy.com正式启用

我的新博客从今天起正式启用了,发文以庆贺。

虽然我很早以前就开始使用网络了,但拥有自己的域名,建立属于自己的网站,对我来说,还是第一次。对一个建站新手来说,建立这个独立博客的过程是艰辛而又充满乐趣的,在此过程中,也让我学到了很多新的知识。改天我会把我的建博过程写出来,期望能让和我一样的新手,能够少一些迷惑,多一些清明!

顺祝大家新年快乐,希望在新的一年里,大家都平安、健康、快乐、幸福!

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/easwy-com-is-in-use-now/

文章的脚注信息由WordPress的wp-posturl插件自动生成