头疼了一个小时就为这个……

同时用vim打开.h和.cpp文件看起来比较方便,于是想写个vim脚本来解决一下。可是竟连个简单的function都出错。

 

function Myfoo()
    let filename = getreg("%");
    let pos = strridx(filename, ".");
    return strpart(filename, 0, pos);
endfunction

问题提示这个:Invalid expression: getreg("%");

 

看了半天也看不出是什么问题。把getreg换成strlen()这样简单的函数也还是出错,上google搜索几乎没有内容。心中万分郁闷啊……

后来,屡试屡败中终于找到了症结所在:一个分号!

原来写代码习惯了,在每行后面写上一个分号……可是vim script里面是没有分号的。折腾了半天,头都大了,竟为这个,唉……

ps:

用vim打开.h和.cpp文件的方法:

 map ,v :vs<CR><C-W><C-W>:e %<.cpp<CR>

更新:

上面是用map的方法实现了这个功能,这得益于%<这个变量,它存储的是去掉后缀的文件名。如果不知道这个变量,想通过自己编写的函数来实现这个功能呢?

其实函数并不难写,只是如何在命令中调用函数。直接写肯定是不可以的。下面先写改正后的Myfoo()函数:

function Myfoo()
    let filename = getreg("%")
    let pos = strridx(filename, ".")
    let name = strpart(filename, pos)
    return name
endfunction

要在命令行中调用这个函数,需要用到:execute命令,如:

 

:execute "e ".Myfoo()

假设正在编辑的文件是fun.h,这个命令就会执行e fun。正是我们想要的效果。好了,下面的语句是使用我们自己写的函数实现在两个窗口中分别编辑.h和.cpp

 

 

map ,q <C-W>v<C-W><C-W>:execute "e ".Myfoo().".cpp"<CR>
 

 

posted @ 2010-12-30 18:22  冰封的水  阅读(198)  评论(0编辑  收藏  举报